1 条题解

  • 0
    @ 2025-6-15 20:31:43
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define maxn 1010
    #define maxk 1000010
    #define lowbit(x) (x)&(-x)
    typedef long long ll;
    int c[maxn],kas,n,m,k;
    struct edge{int x,y;}e[maxk];
    
    bool cmp(edge a,edge b){
        return a.x<b.x||(a.x==b.x&&a.y<b.y);
    }
    
    void add(int i){
        while(i<=m){
            ++c[i];
            i+=lowbit(i);
        }
    }
    
    int sum(int i){
        int s=0;
        while(i>0){
            s+=c[i];
            i-=lowbit(i);
        }
        return s;
    }
    
    int main(){
        int t;scanf("%d",&t);
        while(t--){
            memset(c,0,sizeof(c));
            scanf("%d%d%d",&n,&m,&k);
            for(int i=0;i<k;i++)
                scanf("%d%d",&e[i].x,&e[i].y);
            sort(e,e+k,cmp);
            ll ans=0;
            for(int i=0;i<k;i++){
                ans+=i-sum(e[i].y);
                add(e[i].y);
            }
            printf("Test case %d: %lld\n",++kas,ans);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    2068
    时间
    2100ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者