Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
排序规则究竟应该是什么样的?x升序y升序可以,x降序y降序也可以,x降序y升序就不行x升序y升序可以,x降序y降序也可以,y降序x升序就不行,有没有哪位理解的,解释一下? 代码: #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <cstring> using namespace std; const int MAX=1000+5; typedef long long LL; struct node { int x,y; bool operator <(const node & a) const { return y>a.y||(y==a.y&&x<a.x); } }; node a[MAX*MAX]; int bit[MAX]; int N,M; LL sum(int x) { LL s=0; while(x>0) { s=s+bit[x]; x-=(x&(-x)); } return s; } void add(int x) { while(x<=N) { bit[x]++; x+=(x&(-x)); } } int main() { ios::sync_with_stdio(false); int T; scanf("%d",&T); for(int tcase=1;tcase<=T;tcase++) { int k; scanf("%d%d%d",&N,&M,&k); memset(bit,0,sizeof(bit)); for(int i=0;i<k;i++) { scanf("%d%d",&a[i].x,&a[i].y); } sort(a,a+k); LL ans=0; for(int i=0;i<k;i++) { ans=ans+sum(a[i].x-1); add(a[i].x); } printf("Test case %d: ",tcase); cout<<ans<<endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator