| ||||||||||
| 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 | |||||||||
Re:排序规则究竟应该是什么样的?x升序y升序可以,x降序y降序也可以,x降序y升序就不行In Reply To:排序规则究竟应该是什么样的?x升序y升序可以,x降序y降序也可以,x降序y升序就不行 Posted by:jiajiawang at 2016-08-08 20:39:09 > 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