題意就是讓你求交點有多少個。
我們可以先按a從小到大排序,a相等就按b從小到大排序,這樣題意就變成了讓我們求b數組的逆序數了。
代碼如下:
#include#include #include #include #include #define M 1005 #define LL long long using namespace std; int n,m,k; int c[M]; struct node { int x,y; bool operator < ( const node &h ) const { return x 0) { sum+=c[x]; x-=Lowbit(x); } return sum; } int main() { int t; scanf("%d",&t); for(int count=1;count<=t;count++) { memset(c,0,sizeof(c)); scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=k;i++) { scanf("%d%d",&p[i].x,&p[i].y); } sort(p+1,p+1+k); LL ans=0; for(int i=1;i<=k;i++) { Update(p[i].y,1); ans+=(i-Sum(p[i].y)); } printf("Test case %d: %lld\n",count,ans); } return 0; }