枚举题
思路
去枚举肯定不行,会超空间
那我们可以先把每个地毯都存起来,直接筛一遍所有毯子,判断有没有覆盖这个题目中的点,若覆盖就
更新ans,最后输出ans即可。
AC代码
#include<bits/stdc++.h> #define int long long using namespace std; const int N = 1e6 + 5; int a[N], b[N], g[N], k[N], t, ans = -1; int main(){ int n,m; cin>>n; for(int i = 1; i <= n; i++) cin>>a[i]>>b[i]>>g[i]>>k[i]; int x, y; cin>>x>>y;//点的坐标 for(int i = 1; i <= n; i ++){ if((x >= a[i] && x <= a[i] = g[i]) && (y >= b[i] && y <= b[i] + k[i]))//判断是否覆盖这个点 ans = i;//更新ans } cout<<ans//输出答案 }