• 【CodeForces】[651C]Watchmen


    这里写图片描述

    由题意可知满足条件的点
    必然是x相同或者y相同
    (可有等式化简得到)

    麻烦的地方在于存在
    相同的点
    所以计算时需要去除重复

    这一题写了有断断续续几个小时
    所以思路有点混乱
    到后面有点方
    所以导致忘记了一些小技巧
    然后越方越错
    好在最后怼出来了

    也是一直想着避免加重
    事实上换种思路
    也可以想做先加上
    然后去除重复的

    最后需要注意的是
    数据类型要用__int64

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    struct xy {
        int x,y;
    } node[200200];
    bool cmpx(xy A,xy B) {
        if(A.x==B.x)
            return A.y<B.y;
        else
            return A.x<B.x;
    }
    bool cmpy(xy A,xy B) {
        if(A.y==B.y)
            return A.x<B.x;
        else
            return A.y<B.y;
    }
    int main() {
        int n;
        while(scanf("%d",&n)!=EOF) {
            for(int i=0; i<n; i++) {
                scanf("%d %d",&node[i].x,&node[i].y);
            }
            __int64 res=0;
            sort(node,node+n,cmpx);
            __int64 t=1,ct=1;
            for(int i=1; i<n; i++) {
                if(node[i].x==node[i-1].x) {
                    t++;
                    if(node[i].y==node[i-1].y)
                        ct++;
                    else {
                        res-=ct*(ct-1)/2;
                        ct=1;
                    }
                } else {
                    res+=t*(t-1)/2;
                    res-=ct*(ct-1)/2;
                    ct=1;
                    t=1;
                }
            }
            if (ct>1) {
                res-=ct*(ct-1)/2;
            }
            if (t>1) {
                res+=t*(t-1)/2;
            }
            sort(node,node+n,cmpy);
            t=1;
            for(int i=1; i<n; i++) {
                if(node[i].y==node[i-1].y) {
                    t++;
                } else {
                    res+=t*(t-1)/2;
                    t=1;
                }
            }
            if(t>1)
                res+=t*(t-1)/2;
            printf("%I64d
    ",res);
        }
        return 0;
    }
    

    题目地址:【CodeForces】[651C]Watchmen

  • 相关阅读:
    k8s-istio记录
    k8s
    单词 -(动物)
    RxJs
    .netcore 3.1 unbuntu
    单词规整
    AutoMapper
    时间
    ye
    特殊权限
  • 原文地址:https://www.cnblogs.com/BoilTask/p/12569548.html
Copyright © 2020-2023  润新知