其实这道题,我们可以有一些投机取巧,因为,是看特定的某个位置上最后一块覆盖了的地毯。所以说,你可以从最后一个输入的数据开始排查,如果说你找到了这个点上面有地毯,那么就直接输出这个值,如果没找到就按照题干的意思输出-1。
#include<iostream>
using namespace std;
int main()
{
int n,x,y;
int a[10001],b[10001],g[10001],k[10001];
int i;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
cin>>g[i]>>k[i];
}
cin>>x>>y;
for(i=n;i>=1;i--)
{
if((x>=a[i]&&x<=a[i]+g[i]) && (y>=b[i]&&y<=b[i]+k[i]))
{
cout<<i<<endl;
return 0;
}
}
cout<<-1<<endl;
return 0;
}
该博客主要解析了洛谷P1003问题,采用C++编程语言。博主指出,可以利用问题特性从最后一个输入数据开始反向检查,找到覆盖特定位置的最后一块地毯即为答案,若未找到则输出-1。
铺地毯&spm=1001.2101.3001.5002&articleId=105907866&d=1&t=3&u=6fccd92e90284af7b0c321d7a2391802)
916

被折叠的 条评论
为什么被折叠?



