Hdu5762
Posted repulser
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hdu5762相关的知识,希望对你有一定的参考价值。
Hdu5762
题意:
你n个点,让你找两个数对,A,B和C,D,使得A和B的曼哈顿距离等于C和D的曼哈顿距离,问是否存在这样的对,A!=C且B!=D。
解法:
直接暴力判断,时间复杂度是 $ O(n^2) $
如果单纯的看数据范围的话好像一定会TLE,但是根据鸽笼原理,保证了在一定的数据范围内一定有合法解出现,这就保证了我们一定不会TLE。
CODE:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
const int N = 1e5 + 100;
struct Node
LL x,y;
a[N];
LL T,n,m;
bool flag,vis[2*N+100];
inline LL calc(Node a,Node b)
return abs(a.x - b.x) + abs(a.y - b.y);
int main()
scanf("%lld",&T);
while(T--)
flag = false;
memset(vis,false,sizeof(vis));
scanf("%lld%lld",&n,&m);
for(int i = 0 ; i < n ; i++)
scanf("%lld%lld",&a[i].x,&a[i].y);
if(!flag)
for(int j = 0 ; j < i ; j++)
LL k = calc(a[i],a[j]);
if(vis[k])
flag = true;
break;
else vis[k] = true;
if(flag) puts("YES");
else puts("NO");
return 0;
以上是关于Hdu5762的主要内容,如果未能解决你的问题,请参考以下文章