zoukankan      html  css  js  c++  java
  • POJ

    树状数组简单题。一维排个序,另一维加树状数组里就可以搞了。

    //Twenty
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<queue>
    #include<vector>
    const int maxn=32000+29;
    int n,sum[maxn],ans[maxn],now;
    struct node{
      int l,r;
      friend bool operator <(const node&A,const node&B){
         return A.l==B.l?A.r<B.r:A.l<B.l;
      }
    }a[maxn];
    using namespace std;
    int qry(int x) { 
       int res=0; 
       for(int i=x;i>=1;i-=(i&(-i))) 
       res+=sum[i]; 
       return res;
    }
    void add(int x,int v) { 
       for(int i=x;i<=maxn;i+=(i&(-i))) 
       sum[i]+=v; 
    }
    int main()
    {
       scanf("%d",&n);
       for(int i=1;i<=n;i++) scanf("%d%d",&a[i].l,&a[i].r);
       sort(a+1,a+n+1);
       for(int i=1;i<=n;i++){
         now=qry(a[i].r+1);
         ans[now]++;
         add(a[i].r+1,1);
       }
       for(int i=0;i<n;i++) printf("%d
    ",ans[i]);
       return 0;
    }
    POJ - 2352 stars

     

  • 相关阅读:
    Java并发编程
    Git
    Spring Boot
    IDEA工具
    Java基础
    数据库架构
    设计模式
    网络基础
    管理知识
    linux安装数据库mysql
  • 原文地址:https://www.cnblogs.com/Achenchen/p/7475115.html
Copyright © 2011-2022 走看看