这道题是一道思维题,以为需要什么高深的算法,结果从后往前遍历,看看你找的这个点在不在这个毯子大小里面就可以了。
这个是合理的枚举顺序
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int N = 1e6 + 10;
struct node
{
int a, b, g, k;
} s[N];
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n; cin >> n;
for (int i = 1; i <= n; i ++)
{
cin >> s[i].a >> s[i].b >> s[i].g >> s[i].k;
}
int x, y;
cin >> x >> y;
for (int i = n; i >= 1; i --)
{
if (x >= s[i].a && x <= s[i].a + s[i].g && y >= s[i].b && y <= s[i].b + s[i].k)
{
cout << i;
return 0;
}
}
return 0;
}
铺地毯问题的枚举算法思路
903

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



