Teacher Bo

来源:互联网 发布:天刀捏脸数据男杨洋 编辑:程序博客网 时间:2024/04/29 00:38

Teacher Bo

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 384    Accepted Submission(s): 219


Problem Description
Teacher BoBo is a geography teacher in the school.One day in his class,he markedN points in the map,the i-th point is at (Xi,Yi).He wonders,whether there is a tetrad (A,B,C,D)(A<B,C<D,ACorBD) such that the manhattan distance between A and B is equal to the manhattan distance between C and D.

If there exists such tetrad,print "YES",else print "NO".
 

Input
First line, an integer T. There are T test cases.(T50)

In each test case,the first line contains two intergers, N, M, means the number of points and the range of the coordinates.(N,M105).

Next N lines, the i-th line shows the coordinate of the i-th point.(Xi,Yi)(0Xi,YiM).
 

Output
T lines, each line is "YES" or "NO".
 

Sample Input
23 101 12 23 34 108 82 33 34 4
Sample Output
YESNO
曼哈顿距离:是|x2-x1|+|y2-y1|
#include<stdio.h>#include<math.h>#include<string.h>#include<algorithm>using namespace std;int a[100001],b[100001];int s[200000]= {0};int main(){    int t;    scanf("%d",&t);    while(t--)    {        memset(s,0,sizeof(s));        int n,m;        scanf("%d%d",&n,&m);        for(int i=0; i<n; i++)        {            scanf("%d%d",&a[i],&b[i]);        }        if(n>m)        {            printf("YES\n");        }        else        {            int f=0;            int p=0;            int h=0;            for(int i=0; i<n; i++)            {                for(int j=i+1; j<n; j++)                {                        h++;                        int t,k,ni;                        t=(a[j]-a[i]);                        k=(b[j]-b[i]);                        if(t<0)                        {                            t=-t;                        }                        if(k<0)                        {                            k=-k;                        }                        ni=k+t;                        s[ni]++;                        if(s[ni]>=2)//有两个相等的就可以输出yes了                        {                            f=1;                            break;                        }                    }                if(f==1)                {                    break;                }            }                if(f==1)                    printf("YES\n");                else                    printf("NO\n");        }    }
}


0 0
原创粉丝点击