【模拟】HDU 5762 Teacher Bo

时间:2023-03-08 23:42:21
【模拟】HDU 5762 Teacher Bo

题目链接:

  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[N];
bool u[N<<];
void work()
{
int i,j,x;
for(i=;i<=n;i++)
{
for(j=i+;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]=;
}
}
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,,sizeof(u));
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
work();
}
return ;
}
/*
// //
*/