• HDU 5762 Teacher Bo (暴力)


    Teacher Bo

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=5762

    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,A≠CorB≠D) 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.(T≤50)

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

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

    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

    Source

    2016 Multi-University Training Contest 3


    ##题意: 给出平面上的N个点,求是否一个四元组(A,B,C,D)满足AB之间的曼哈顿距离等于CD之间距离. 条件(A
    ##题解: 这个题让我懵比的两个小时... 一开始先把曼哈顿距离想成了abs(dx+dy),然后可以只考虑每个点的坐标和,从而误把题目转化为求一个数组中是否有两对数的和相等. 由于规模是1e5,然后一直在想O(nlogn)的算法...
    首先,曼哈顿距离的正确定义是abs(dx)+abs(dy). 其次,题目的数据规模确实不能跑O(n^2)的算法,但是题目限制了坐标的范围为[0,1e5], 这意味着任意两点的曼哈顿距离只可能有2e5种可能,暴力最多只会判断2e5个组合,所以不会超时. 所以直接暴力判断所有组合即可,当出现重复的距离时停止判断(先离线数据).
    这个题懵比这么久真的是非常不应该,所以以后卡题的时候,一定要重新读题和尝试转换思考角度.

    ##代码: ``` cpp #include #include #include #include #include #include #include #include #include #define LL long long #define eps 1e-8 #define maxn 251000 #define mod 100000007 #define inf 0x3f3f3f3f #define IN freopen("in.txt","r",stdin); using namespace std;

    int n,m;
    struct point {
    int x,y;
    }p[maxn];
    bool dis[maxn];

    int get_ans(point a, point b) {
    return abs(a.x-b.x) + abs(a.y-b.y);
    }

    int main(int argc, char const *argv[])
    {
    //IN;

    int t; cin >> t;
    while(t--)
    {
        memset(dis, 0, sizeof(dis));
        cin >> n >> m;
    
        int flag = 0;
    
        for(int i=1; i<=n; i++) {
            int x,y; scanf("%d %d", &x,&y);
            p[i].x=x; p[i].y=y;
        }
    
        for(int i=1; i<=n; i++) {
            for(int j=1; j<i; j++) {
                int tmp = get_ans(p[i],p[j]);
                if(dis[tmp]) {
                    flag = 1;
                    break;
                }
                dis[tmp] = 1;
            }
            if(flag) break;
        }
    
        if(flag) puts("YES");
        else puts("NO");
    }
    
    return 0;
    

    }

  • 相关阅读:
    php备份数据库类分享
    nginx https配置后无法访问,可能防火墙在捣鬼
    linux服务器,svn认证失败,配置问题,防火墙等等
    为了解决linux配置Nginx 只能关闭防火墙才能访问的问题
    nginx 防火墙、权限问题
    思数云hadoop目录
    delete
    善用GIMP(Linux下的Photoshop),图像处理轻松又自由
    超赞干货!2016年新鲜出炉的20款网页开发工具推荐
    10款Web前端工具
  • 原文地址:https://www.cnblogs.com/Sunshine-tcf/p/5709156.html
Copyright © 2020-2023  润新知