zoukankan      html  css  js  c++  java
  • POJ 3067 Japan(树状数组求逆序对)

    POJ - 3067 

    题意:西边给你一排点,东边给你一排点,再给你k条连接东西的线,现问有多少个交点?

    题解:pair存左右两边的点,对pair进行sort,此时得到的pair是按照first排好序的(如果first相同则按照second排序),此时可以发现只需要去找在逆序对即可。注意!!!!!!pair开N*N大小,导致我WA了好久。。。。。。

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    #define Pii pair<int,int>
    using namespace std;
    const int N=1e3+5;
    using namespace std;
    int c[N];
    Pii p[N*N];
    int n,m,k;
    void add(int x){
        while(x<=m){
            c[x]++;
            x+=x&-x;
        }
    }
    ll getsum(int x){
        ll ans=0;
        while(x>0){
            ans+=c[x];
            x-=x&-x;
        }
        return ans;
    }
    int main(){
        fio;
        int t;
        scanf("%d",&t);
        for(int _=1;_<=t;_++){
            memset(c,0,sizeof(c));
            //printf("Test case %d: ",_);
            scanf("%d %d %d",&n,&m,&k);
            for(int i=0;i<k;i++)scanf("%d %d",&p[i].fi,&p[i].se);
            sort(p,p+k);
            ll ans=0;
            for(int i=0;i<k;i++){
                //ans+=getsum(m)-getsum(p[i].se);
                add(p[i].se);
                ans+=i+1-getsum(p[i].se);
            }
            printf("Test case %d: %lld
    ",_,ans);
        }
        return 0;
    }
  • 相关阅读:
    css的书写位置+元素分类
    选择器
    我的js运动库新
    js的相关距离
    关于小乌龟的使用
    linux 基础
    linux shell快捷操作【超级实用】
    算法面试常见问题【转】
    http://www.cnblogs.com/zhangchaoyang/archive/2012/08/28/2660929.html
    cocos2dx + vs安装使用
  • 原文地址:https://www.cnblogs.com/Mrleon/p/8405515.html
Copyright © 2011-2022 走看看