标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 21769 | Accepted: 5885 |
Description
Input
Output
Sample Input
1 3 4 4 1 4 2 3 3 2 3 1
Sample Output
Test case 1: 5
排个序,转化成逆序数
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
#define N 2010
int tt,n,m,k,c[N];
struct node
{
int x,y,pos;
}e[N*N];
bool cmp(node a,node b)
{
if(a.x!=b.x) return a.x<b.x;
return a.y<b.y;
};
int lowbit(int x)
{
return x&(-x);
}
void update(int pos,int m)
{
while(pos<N)
{
c[pos]+=m;
pos+=lowbit(pos);
}
}
int sum(int x)
{
int sum=0;
while(x>0)
{
sum+=c[x];
x-=lowbit(x);
}
return sum;
}
int main()
{
int cas=1;
scanf("%d",&tt);
while(tt--)
{
long long ans=0;
memset(c,0,sizeof(c));
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=k;i++)
scanf("%d%d",&e[i].x,&e[i].y);
sort(e+1,e+1+k,cmp);
for(int i=1;i<=k;i++)
{
update(e[i].y,1);
ans+=i-sum(e[i].y);
}
printf("Test case %d: %I64d\n",cas,ans);
cas++;
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4256726.html