洛谷P1003 铺地毯

女爷i 2022-05-31 07:39 191阅读 0赞

题目描述

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

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

输入输出格式

输入格式:

输入文件名为carpet.in 。

输入共n+2 行。

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

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

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

输出格式:

输出文件名为carpet.out 。

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

输入输出样例

输入样例#1: 复制

  1. 3
  2. 1 0 2 3
  3. 0 2 3 3
  4. 2 1 3 3
  5. 2 2

输出样例#1: 复制

  1. 3

输入样例#2: 复制

  1. 3
  2. 1 0 2 3
  3. 0 2 3 3
  4. 2 1 3 3
  5. 4 5

输出样例#2: 复制

  1. -1

说明

【样例解释1】

如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点(2,2)的最上面一张地毯是 3 号地毯。

100.png

【数据范围】

对于30% 的数据,有 n ≤2 ;

对于50% 的数据,0 ≤a, b, g, k≤100;

对于100%的数据,有 0 ≤n ≤10,000 ,0≤a, b, g, k ≤100,000。

noip2011提高组day1第1题

错误代码

  1. #include<stdio.h>
  2. #include<iostream>
  3. using namespace std;
  4. #define maxn 10000
  5. int map[maxn][maxn];
  6. int main()
  7. {
  8. //freopen("1.txt", "r", stdin);
  9. int n;
  10. cin >> n;
  11. int a, b, g, k;
  12. for (int i = 1; i <= n;i++)
  13. {
  14. cin >> a >> b >> g >> k;
  15. for (int x = a; x <= a + g;x++)
  16. for (int y = b; y <= b + k; y++)
  17. map[x][y] = i;
  18. }
  19. cin >> a >> b;
  20. if (!map[a][b])
  21. cout << -1;
  22. else
  23. cout << map[a][b];
  24. return 0;
  25. }

原因:会爆内存

正解:https://www.luogu.org/blog/user65534/solution-p1003#

  1. using namespace std;//头文件略去
  2. int a[10001][5];//定义一个二维数组
  3. int main()
  4. {
  5. int al,b,n;
  6. cin>>n;
  7. for(int i=1;i<=n;i++)
  8. {
  9. cin>>a[i][1]>>a[i][2]>>a[i][3]>>a[i][4];
  10. a[i][3]+=a[i][1];
  11. a[i][4]+=a[i][2];
  12. }//至此看出,a数组作用为:a[i][1]:第i张地毯起始点的x轴......a[i][2]:第i张地毯起始点的y轴......a[i][3]:第i张地毯终点的x轴a[i][4]:第i张 //地毯终点的x轴
  13. cin>>al>>b;
  14. for(int i=n;i>=1;i--)
  15. {
  16. if(a[i][1]<=al&&a[i][2]<=b&&a[i][3]>=al&&a[i][4]>=b) {cout<<i<<endl; return 0;}//判断第i张地毯是否覆盖(a,b)。若覆盖,输 //出并结束。
  17. }
  18. cout<<-1<<endl;//没搜到输出-1.
  19. return 0;
  20. }

发表评论

表情:
评论列表 (有 0 条评论,191人围观)

还没有评论,来说两句吧...

相关阅读

    相关 [NOIP2011]地毯

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 nn 张地毯,编号从 11 到nn。现在将这

    相关 P1003 地毯

    哦,最近没给你们讲解洛谷题目是吧 俗话说,天下无一生下来就是天才的人,你以为我是天才吗?本大人也在刷题兮! 你们想讲什么题目? 还有…… 我新手村刷完了

    相关 地毯

    [https://vijos.org/p/1736][https_vijos.org_p_1736] 描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(

    相关 蓝桥杯:地毯

    为了准备一个学生节,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限铺上一些矩形地毯。一共有n 张地毯,编号从1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐

    相关 p1164

    > P1164 小A点菜 > > 题目描述 > > uim口袋里有剩M元(M<=10000)。 > > 餐馆虽低端,但是菜品种类不少,有N种(N<=100),第i

    相关 P1003 地毯

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到n 。现在将这些地

    相关 P1003 地毯

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 nn 张地毯,编号从 11 到nn。现在将这

    相关 P3382

    题目:[点击打开链接][Link 1] 题意:如题,给出一个N次函数,保证在范围\[l,r\]内存在一点x,使得\[l,x\]上单调增,\[x,r\]上单调减。试求出x

    相关 P1003 地毯

    嗯.... 一道比较水的模拟题.. 刚拿到题的时候被它的数据范围吓到了,二维数组不可能开那么大啊,可是一边做发现测试数据太水 ... 先看