NC16593 铺地毯

铺地毯

https://ac.nowcoder.com/acm/problem/16593

题目:
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n张地毯,编号从1到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。
对于30%的数据,有n≤2;
对于50%的数据,有0≤a,b,g,k≤100;
对于100%的数据,有0≤n≤10,000,0≤a,b,g,k≤100,000。
思路:看到这题第一眼想的就是把每个矩形对应的点的值都变成编号,后来想应该是超时的,最后想到前从前往后存储矩阵坐标,当输入要找的坐标时再从后往前看这个点是不是在矩阵中,即可找到最后覆盖的矩阵,如果未找到输出-1即可
代码如下:
#include

using namespace std;
struct regular
{
int a,b,x,y;
};
regular a[10005]={0};
int main()
{
int n,i;
cin>>n;
for(i=0; i<n; i++)//储存矩阵坐标
{
cin>>a[i].a>>a[i].b>>a[i].x>>a[i].y;
a[i].x+=a[i].a;
a[i].y+=a[i].b;
}
int ansx,ansy,ok=0;//用OK判断找没找到地毯
cin>>ansx>>ansy;
for(i=n-1; i>=0; i--)
{
if(ansx<=a[i].x&&ansx>=a[i].a&&ansy>=a[i].b&&ansy<=a[i].y)//看这个点是不是在矩阵里
{
ok=1;
cout<<i+1;
break;
}
}
if(ok==0)cout<<'-1';
return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1152186次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11209次浏览 101人参与
# 不去互联网可以去金融科技 #
20500次浏览 258人参与
# 和牛牛一起刷题打卡 #
19030次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203436次浏览 3627人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4979次浏览 30人参与
# OPPO开奖 #
19226次浏览 267人参与
# 通信硬件薪资爆料 #
265968次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2229次浏览 34人参与
# 互联网公司评价 #
97719次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25039次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454917次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53924次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14647次浏览 349人参与
# 硬件人的简历怎么写 #
82290次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19404次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28222次浏览 248人参与
# 学历对求职的影响 #
161255次浏览 1804人参与
# 你收到了团子的OC了吗 #
538781次浏览 6387人参与
# 你已经投递多少份简历了 #
344278次浏览 4963人参与
# 实习生应该准时下班吗 #
96990次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63525次浏览 622人参与
牛客网
牛客企业服务