POJ 3067 japan

来源:互联网 发布:剑三成男脸型数据网盘 编辑:程序博客网 时间:2024/04/30 14:54

//按第一列排序,就求第二列的逆序数,按第二列排序,就求地一列逆序数//

AC代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 1500int n,m,k;int a[N*N];struct node{    int x,y;}t[N*N];int cmp(node p,node q){    if(p.x==q.x)    {        return p.y<q.y;    }    else    {        return p.x<q.x;    }}int lower_bit(int i){    return i&(-i);}void add(int i,int v){    while(i<=m)    {        a[i]+=v;        i+=lower_bit(i);    }}int sum(int i){    int s=0;    while(i>0)    {        s+=a[i];        i-=lower_bit(i);    }    return s;}int main(){    int r,o=1;    scanf("%d",&r);    while(r--)    {        memset(a,0,sizeof(a));        scanf("%d%d%d",&n,&m,&k);        for(int i=1;i<=k;i++)        {            scanf("%d%d",&t[i].x,&t[i].y);        }        sort(t+1,t+k+1,cmp);        long long cnt=0;        for(int i=1;i<=k;i++)        {            add(t[i].y,1);            cnt+=i-sum(t[i].y);        }        printf("Test case %d: %lld\n",o++,cnt);    }    return 0;}

0 0
原创粉丝点击