题意:观察到其实当n*n大于2*m时,点对数肯定大于可能取到的曼哈顿距离,所以当小于2*m时,可以暴力模拟
#include<bits/stdc++.h>
using namespace std;
struct NODE {
int x,y;
}a[111111];
bool vis[1111111];
int main()
{
int t;
int n,m;
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) {
scanf("%d%d",&a[i].x,&a[i].y);
}
if(n*n>=2*m+10) {
printf("YES\n");
continue;
}
int fa=0;
memset(vis,0,sizeof vis[0]*2*m);
for(int i=1;i<n;i++) {
for(int j=i+1;j<=n;j++) {
int dis=fabs(a[i].x-a[j].x)+fabs(a[i].y-a[j].y);
if(vis[dis]==1) {
fa=1;
break;
}
vis[dis]=1;
}
if(fa==1) {
break;
}
}
if(fa==1) {
printf("YES\n");
}
else {
printf("NO\n");
}
}
return 0;
}