HDU 5762Teacher Bo

Teacher Bo

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 133    Accepted Submission(s): 84


Problem Description
Teacher BoBo is a geography teacher in the school.One day in his class,he marked N 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,ACorBD) 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".
 

 

Input
First line, an integer T. There are T test cases.(T50)

In each test case,the first line contains two intergers, N, M, means the number of points and the range of the coordinates.(N,M105).

Next N lines, the i-th line shows the coordinate of the i-th point.(Xi,Yi)(0Xi,YiM).
 

 

Output
T lines, each line is "YES" or "NO".
 

 

Sample Input
2
3 10
1 1
2 2
3 3
4 10
8 8
2 3
3 3
4 4
 

 

Sample Output
YES
NO
 
直接暴力就可以了。为什么可以暴力?因为m最大才100000 那么最多也就有10 0000种曼哈顿距离。座椅答案一定在O(m)的时间内找到。
/* ***********************************************
Author        :guanjun
Created Time  :2016/7/26 15:10:50
File Name     :p311.cpp
************************************************ */
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <iomanip>
#include <list>
#include <deque>
#include <stack>
#define ull unsigned long long
#define ll long long
#define mod 90001
#define INF 0x3f3f3f3f
#define maxn 100010
#define cle(a) memset(a,0,sizeof(a))
const ull inf = 1LL << 61;
const double eps=1e-5;
using namespace std;
priority_queue<int,vector<int>,greater<int> >pq;
struct Node{
    int x,y;
};
struct cmp{
    bool operator()(Node a,Node b){
        if(a.x==b.x) return a.y> b.y;
        return a.x>b.x;
    }
};

bool cmp(int a,int b){
    return a>b;
}
int n,m;
int x[maxn];
int y[maxn];
map<int,int>mp;
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    #endif
    //freopen("out.txt","w",stdout);
    int t;
    cin>>t;
    while(t--){
        cin>>n>>m;
        mp.clear();
        for(int i=1;i<=n;i++){
            scanf("%d%d",&x[i],&y[i]);
        }
        int mark=0;
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                int z=abs(x[i]-x[j])+abs(y[i]-y[j]);
                if(!mp[z]){
                    mp[z]=1;
                }
                else{
                    mark=1;
                    break;
                }
            }
            if(mark)break;
        }
        if(mark)puts("YES");
        else puts("NO");
    }
    return 0;
}

 

posted on 2016-07-26 19:13  Beserious  阅读(197)  评论(0编辑  收藏  举报