hdu5762(2016多校第三场,思维题)
2016-07-28 11:28
423 查看
Teacher Bo
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1532 Accepted Submission(s): 593
[align=left]Problem Description[/align]
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,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
题意:给出一个已知坐标范围的点集,找出可能的曼哈顿距离相等的两组点对,如果存在输出yes,不存在输出no。
思路:这题主要是给你了点集的范围,所以得从这里入手,如果最大的点集范围是m,那么最大的曼哈顿距离就是2*m,那么就可以用数组来记录是否有重叠的,当然,也就是说如果遍历次数超过了2*m次,肯定存在曼哈顿距离相等的两个点对。
#include <iostream> #include<string.h> #include<vector> #include<queue> #include<algorithm> #include<stdio.h> #include<math.h> using namespace std; typedef long long ll; struct data { int x,y; } p[100010]; bool vis[200010]; int dd(int x,int y) { return abs(p[x].x-p[y].x)+abs(p[x].y-p[y].y); } int main() { int t; scanf("%d",&t); while(t--) { memset(vis,0,sizeof(vis)); int n,m,jl; scanf("%d%d",&n,&m); jl=2*m; for(int i=0; i<n; i++) scanf("%d%d",&p[i].x,&p[i].y); int flag=0; for(int i=0; i<n; i++) { for(int j=i+1; j<n; j++) { int h1=dd(i,j); if(vis[h1]==0) { vis[h1]=1; } else if(vis[h1]==1) { flag=1; break; } } if(flag)break; } if(flag)printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- ACM程序设计大赛题目分类
- 2015年acm国内排名
- 计算字符串最后一个单词长度
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 初学ACM - 半数集(Half Set)问题 NOJ 1010 / FOJ 1207
- 初学ACM - 组合数学基础题目PKU 1833
- POJ ACM 1002