您的位置:首页 > 其它

HDU 5762 Teacher Bo (水题)

2016-07-27 13:17 357 查看
题目链接:HDU 5762

题面:

Teacher Bo

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)

Total Submission(s): 644    Accepted Submission(s): 353


[align=left]Problem Description[/align]
Teacher BoBo is a geography teacher in the school.One day in his class,he marked
N
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,A≠CorB≠D)
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".
 

[align=left]Input[/align]
First line, an integer T.
There are T
test cases.(T≤50)

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

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

[align=left]Output[/align]
T
lines, each line is "YES" or "NO".
 

[align=left]Sample Input[/align]

2
3 10
1 1
2 2
3 3
4 10
8 8
2 3
3 3
4 4

 

[align=left]Sample Output[/align]

YES
NO

 

[align=left]Source[/align]
2016 Multi-University Training Contest 3

题意:

     问给定的点中,是否存在两对点的曼哈顿距离完全相同,两对点不可以是同一对点。

解题:

     其实这题考察的就是暴力,只要抓住差值范围是在0-2*10^5范围内这一点就可以解决。看似n^2遍历,实则最多只会在2*10^5时停下来,用vis数组标记一下即可,如果出现点访问两次即有。

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#define LL long long
using namespace std;
bool vis[200005];
int x[100005],y[100005];
int main()
{
int t,n,m,tmp;
bool flag=0;
scanf("%d",&t);
while(t--)
{
flag=0;
scanf("%d%d",&n,&m);
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
scanf("%d%d",&x[i],&y[i]);
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
tmp=abs(x[j]-x[i])+abs(y[j]-y[i]);
if(vis[tmp])
{
flag=1;
break;
}
else
vis[tmp]=1;
}
if(flag)break;
}
if(flag)printf("YES\n");
else printf("NO\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu 入门