[NOIP2011]铺地毯

本文介绍了一个简单的算法问题,即在给定多张矩形地毯铺设情况后,如何确定某坐标点上最顶层地毯的编号。通过记录每张地毯的左下角坐标并逐一判断目标点是否位于各地毯范围内,实现快速查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 nn 张地毯,编号从 11 到nn。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。

地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

输入格式

输入共\(n+2\)

第一行,一个整数nn,表示总共有nn张地毯

接下来的\(n\)行中,第\(i+1\)行表示编号ii的地毯的信息,包含四个正整数\(a ,b ,g ,k\),每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标\((a,b)\)以及地毯在\(x\)轴和\(y\)轴方向的长度

\(n+2\)行包含两个正整数\(x\)\(y\),表示所求的地面的点的坐标\((x,y)\)

输出格式

输出共1行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出\(-1\)

输入输出样例
输入

3
1 0 2 3
0 2 3 3
2 1 3 3
2 2

输出

3

数据范围

对于30% 的数据,有 \(n ≤2\)
对于50% 的数据,\(0 ≤a, b, g, k≤1000\)
对于100%的数据,有 \(0 ≤n ≤10,000 ,0≤a, b, g, k ≤100,000\)

题解

简单题,记录每张地毯的左下角编号,先依次记录每张地毯左下角的坐标\((x,y)\),再枚举判断要求的坐标点\((a,b)\)是否在地毯范围内,如果在则更新\(ans\)即可。

#include<bits/stdc++.h>
#define int long long
#define maxn 100005
#define local
using namespace std;
inline char get(){
    static char buf[30000],*p1=buf,*p2=buf;
    return p1==p2 && (p2=(p1=buf)+fread(buf,1,30000,stdin),p1==p2)?EOF:*p1++;
}
inline int read(){
    register char c=get();register int f=1,_=0;
    while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
    while(c<='9' && c>='0')_=(_<<3)+(_<<1)+(c^48),c=get();
    return _*f;
}
int n;
struct edge{
    int x,y,n,m;
}E[maxn];
signed main(){
    #ifdef local
    freopen("1.txt","r",stdin);
    #endif
    n=read();
    for(register int i=1;i<=n;i++)E[i].x=read(),E[i].y=read(),E[i].n=read(),E[i].m=read();
    int x=read(),y=read();
    int ans=-1;
    for(register int i=1;i<=n;i++){
        if(E[i].x<=x && E[i].x+E[i].n>=x && E[i].y<=y && E[i].y+E[i].m>=y)ans=i;
    }
    cout<<ans<<endl;
    return 0;
}

转载于:https://www.cnblogs.com/Chen574118090/p/11550796.html

### 中职学校网络安全理论课程大纲和教学内容 #### 2025年中职学校网络安全理论课程概述 随着信息技术的发展网络安全已成为信息化社会的重要组成部分。为了适应这一需求,中职学校的网络安全理论课程旨在培养学生具备基本的网络安全意识和技术能力,使学生能够在未来的职业生涯中应对各种网络威胁。 #### 教学目标 该课程的目标是让学生理解网络安全的基本概念、原理和技术手段,掌握常见的安全防护措施,并能应用这些知识解决实际问题。具体来说,学生应达到以下几点: - 掌握计算机网络基础架构及其工作原理; - 理解信息安全管理体系框架及其实现方法; - 学习密码学基础知识以及加密算法的应用场景; - 能够识别常见攻击方式并采取有效防御策略; #### 主要章节安排 ##### 第一章 计算机网络与互联网协议 介绍计算机网络的基础结构和服务模型,重点讲解TCP/IP五层体系结构中的各层次功能特点,特别是传输控制协议(TCP)和用户数据报协议(UDP)[^1]。 ##### 第二章 信息系统安全保障概论 探讨信息系统的脆弱性和风险评估机制,阐述如何通过物理隔离、访问控制等措施来保障系统安全性。 ##### 第三章 密码学入门 讲述对称密钥体制和非对称密钥体制的区别与发展历程,分析公钥基础设施(PKI)的工作流程及其重要性。 ##### 第四章 防火墙技术与入侵检测系统(IDS) 解释防火墙的作用原理及其分类形式(包过滤型、代理服务器型),讨论IDS的功能特性及部署建议。 ##### 第五章 Web应用程序安全 针对Web环境下的特殊挑战展开论述,如SQL注入漏洞利用、跨站脚本(XSS)攻击防范等内容。 ##### 实践环节设置 除了上述理论部分外,在每学期还设有专门实践课时用于模拟真实环境中可能遇到的安全事件处理过程,增强学生的动手操作能力和应急响应水平。 ```python # Python代码示例:简单的MD5哈希函数实现 import hashlib def md5_hash(text): hasher = hashlib.md5() hasher.update(text.encode('utf-8')) return hasher.hexdigest() print(md5_hash("example")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值