【模拟】[NOIP2011]铺地毯[c++]
2017-03-14 23:36
344 查看
[b]题目描述[/b]
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯,一共有n张地毯,编号从 1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。
地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。
输入
输入共 n+2行。
第一行有一个整数n,表示总共有 n张地毯。
接下来的 n行中,第 i+1行表示编号 i的地毯的信息,包含四个正整数 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
[b]分析[/b]
由于数据规模,不能让区域上的每个点来记录最后覆盖自己的地毯编号。
可以换个角度,把地毯看作对象,每块地毯由编号和覆盖范围构成。
然后从最后一块地毯开始,判断坐标点是否在当前地毯上。
[b]代码[c++][/b]
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯,一共有n张地毯,编号从 1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。
地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。
输入
输入共 n+2行。
第一行有一个整数n,表示总共有 n张地毯。
接下来的 n行中,第 i+1行表示编号 i的地毯的信息,包含四个正整数 a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标(a,b)以及地毯在 x轴和 y轴方向的长度。
第 n+2 行包含两个正整数 x 和 y,表示所求的地面的点的坐标(x,y)。
0≤n≤10,000,0≤a, b, g, k≤100,000
输出
输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1。
样例输入
3
1 0 2 3
0 2 3 3
2 1 3 3
2 2
样例输出
3
[b]分析[/b]
由于数据规模,不能让区域上的每个点来记录最后覆盖自己的地毯编号。
可以换个角度,把地毯看作对象,每块地毯由编号和覆盖范围构成。
然后从最后一块地毯开始,判断坐标点是否在当前地毯上。
[b]代码[c++][/b]
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN = 10005; int main() { int n; scanf("%d",&n); int a[MAXN],b[MAXN],g[MAXN],k[MAXN]; for(int i=1; i<=n; i++) { scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]); } int qx,qy; scanf("%d%d",&qx,&qy); bool flag=false; for(int i=n; i>=1; i--) { if(qx>=a[i]&&qx<=a[i]+g[i]&&qy>=b[i]&&qy<=b[i]+k[i]) { flag=true; printf("%d\n",i); break; } } if(!flag) printf("-1\n"); }
相关文章推荐
- 【模拟】【NOIP2011提高组Day1】铺地毯
- 【模拟】【NOIP2011提高组Day1】铺地毯
- |洛谷|NOIP2011|模拟|P1003 铺地毯
- 【NOIP 2011 Day1 T1】铺地毯(模拟)
- 【NOIP2011】【模拟】铺地毯
- 【模拟】[NOIP2011提高组]铺地毯
- 【模拟】[NOIP2011提高组]铺地毯
- [模拟][NOIP2011] (提高组)D1 T1 铺地毯
- [NOIP 2011]铺地毯 模拟
- [NOIP2011]铺地毯
- [NOIP2011]铺地毯 D1 T1
- NOIP2011 铺地毯
- [NOIP2011]铺地毯
- NOIP2011 铺地毯 题解
- NOIP2011 铺地毯
- 冲刺NOIP2011 模拟试题(七)
- NOIP2011 铺地毯
- 【noip2011】铺地毯
- noip2011 统计单词数 (模拟)
- noip2011 数字反转 (模拟)