hdu5762Teacher Bo
2016-07-26 18:46
267 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5762
题意:给定n个点(x,y),求是否存在两对点对的曼哈顿距离相等。
分析:数据范围题。曼哈顿距离一定是0~2*10^5,如果不存在的话就最多只能有sqrt(2*10^5)个不同的曼哈顿距离咯。那么n<500暴力,n>=500直接输出yes即可。
代码:
#include<map> #include<set> #include<cmath> #include<queue> #include<bitset> #include<math.h> #include<vector> #include<string> #include<stdio.h> #include<cstring> #include<iostream> #include<algorithm> #pragma comment(linker, "/STACK:102400000,102400000") using namespace std; const int N=100010; const int mod=100000000; const int MOD1=1000000007; const int MOD2=1000000009; const double EPS=0.00000001; typedef long long ll; const ll MOD=1000000007; const int MAX=2000000010; const ll INF=1ll<<55; const double pi=acos(-1.0); typedef double db; typedef unsigned long long ull; struct node { int x,y; }a ; int d[300000]; int main() { int i,j,n,m,k,t,bo; scanf("%d", &t); while (t--) { scanf("%d%d", &n, &m); for (i=1;i<=n;i++) scanf("%d%d", &a[i].x, &a[i].y); if (n>500) printf("YES\n"); else { k=0;bo=0; for (i=2;i<=n;i++) for (j=1;j<i;j++) d[++k]=abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y); sort(d+1,d+k+1); for (i=1;i<k;i++) if (d[i]==d[i+1]) { bo=1;break ; } if (bo) printf("YES\n"); else printf("NO\n"); } } return 0; }
相关文章推荐
- bzoj1497(最大获利,最大点权闭合子图)
- Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
- C#中如何截取Windows消息来触发自定义事件
- 关于一台服务器开启多个网站的cookie问题
- 爬虫学习在路上
- 洛谷 P2530 [SHOI2001]化工厂装箱员
- CSS 代码语法 代码注释
- bzoj 3728: PA2014Final Zarowki
- Android显示GIF动态图的三种方式
- Android 字符串拼接
- 344. Reverse String
- 2016 Multi-University Training Contest 3 hdu 5762 Teacher Bo【计算几何】
- java cef3 禁止右键菜单项
- NSURLSession下载文件—断点续传
- Centos 源码安装 MySQL
- POJ1163 The Triangle
- centos7安装vncserver
- MATLAB - contour函数
- floyd算法
- 12.2 使用DROP INDEX删除索引