您的位置:首页 > 其它

【模拟】HDU 5762 Teacher Bo

2016-08-16 23:36 218 查看
题目链接:
  http://acm.hdu.edu.cn/showproblem.php?pid=5762

题目大意

  给n个点,坐标范围0~m(n,m<=105),求是否存在2个点对满足哈夫曼距离相等。

题目思路:

  【模拟】

  乍一看n2绝对T了,但是细想之下发现,坐标范围只有105,那么哈夫曼距离最多就2x105种,所以当循环超出这个范围时肯定能找到解(抽屉原理)。

 

//
//by coolxxx
//
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) ((a)*(a))
#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
#define eps (1e-8)
#define J 10000000
#define MAX 0x7f7f7f7f
#define PI 3.1415926535897
#define N 100004
using namespace std;
typedef long long LL;
int cas,cass;
int n,m,lll,ans;
struct xxx
{
int x,y;
}a
;
bool u[N<<1];
void work()
{
int i,j,x;
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
x=abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y);
if(u[x])
{
puts("YES");
return;
}
u[x]=1;
}
}
puts("NO");
}
int main()
{
#ifndef ONLINE_JUDGE
//	freopen("1.txt","r",stdin);
//	freopen("2.txt","w",stdout);
#endif
int i,j,x;
for(scanf("%d",&cas);cas;cas--)
//	for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
//	while(~scanf("%s",s))
//	while(~scanf("%d",&n))
{
memset(u,0,sizeof(u));
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
work();
}
return 0;
}
/*
//

//
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: