zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    小程序 scroll-view 中文字不换行问题
    模块
    网络编程
    元类
    day24
    day23
    day22
    day21
    day18
    day17
  • 原文地址:https://www.cnblogs.com/Repulser/p/11437387.html
Copyright © 2011-2022 走看看