zoukankan      html  css  js  c++  java
  • SPOJ RATING

    题意: 有N(N≤300000)coder, 每个coder[i]有两个属性A[i] 和 H[i] , 。

    当(A[i] ≥ A[j] && H[i] ≥ H[j]) && (A[i] > A[j] || H[i] > H[j]) 时,认为coder[i] 比 coder[j]优秀 ,问每个coder[i]比多少个其他的coder优秀?
    我的代码中 X为A   Y为H
    先对X进行升序排序,X相同时对Y进行升序排序
     1 #include <cstdio>
     2 #include <iostream>
     3 #include <string.h>
     4 #include <algorithm>
     5 using namespace std;
     6 int c[100005],k,m,lv[300002]={0};
     7 struct coder{
     8     int x,y,id;
     9 }l[300002];
    10 int lowbit(int x){return x&(-x);}                           //树状数组模板,直接用
    11 int sum(int b){
    12     int  sum=0;
    13     while(b>0){
    14         sum+=c[b];
    15         b-=lowbit(b);
    16     }
    17     return sum;
    18 }
    19 void add(int x){
    20     while(x<=100005){
    21         ++c[x];
    22         x+=lowbit(x);
    23     }
    24 }
    25 bool cmp(coder a,coder b){
    26     return a.x==b.x?a.y<b.y:a.x<b.x;
    27 }
    28 int main(){
    29         scanf("%d",&k);
    30         for(int j=1;j<=k;++j){
    31             scanf("%d%d",&l[j].x,&l[j].y);
    32             l[j].id=j;                                              //记录ID,用于以后的顺序输出
    33         }
    34         memset(c,0,sizeof(c));
    35         sort(l+1,l+k+1,cmp);
    36         for(int i=1;i<=k;i++){
    37             if(i>1&&l[i-1].x==l[i].x&&l[i-1].y==l[i].y)lv[l[i].id]=lv[l[i-1].id];//当X1=X2&&Y1=Y2时,直接调用else哪里的方法会统计过多
    38             else lv[l[i].id]=sum(l[i].y);                                       //由于已将排好序的,而且经过判断,直接调用的时候,X1=X2时,Y2一定大于Y1,所以可以直接统计
    39             add(l[i].y);
    40         }
    41         for(int i=1;i<=k;i++){
    42             printf("%d
    ",lv[i]);                   //按顺序一行一个输出
    43         }
    44     return 0;
    45 }
  • 相关阅读:
    [转]男人25岁之前应该懂得的21个道理
    family album U.S.A 05
    Humour
    Pretty Boy
    [转]男人本色.女人风韵
    电话英语
    搞不懂的女人
    family album U.S.A 03
    [转]The flame of love(爱的火焰)
    四季花开!
  • 原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3900916.html
Copyright © 2011-2022 走看看