这种题要知道曼哈顿距离,百度得知d(i,j)=|X1-X2|+|Y1-Y2|.
这道题我看大牛博客说暴力能过 我至今对时间复杂度不是太了解 看来得补补了
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=100001;
struct node
{
int x,y;
}aa[maxn];
int a[2*maxn];
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
scanf("%d%d",&aa[i].x,&aa[i].y);
int s,flag=0;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
s=abs(aa[i].x-aa[j].x)+abs(aa[i].y-aa[j].y);
a[s]++;
if(a[s]>1)
flag=1;
}
if(flag)
break;
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
}