zoukankan      html  css  js  c++  java
  • C++-POJ2352-Stars[数据结构][树状数组]

    /*
    虽然题目没说,但是读入有以下特点 
    由于,输入是按照按照y递增,如果y相同则x递增的顺序给出的
    所以,可以利用入读的时间进行降为处理
    */

    于是我们就得到了一个一维的树状数组解法啦

    值得一提:坐标从0~32000,而树状数组是从1开始的

    于是,我们对所有下标+1,数组开到32002就可以啦!

     1 #include <set>
     2 #include <map>
     3 #include <cmath>
     4 #include <queue>
     5 #include <vector>
     6 #include <cstdio>
     7 #include <cstdlib>
     8 #include <cstring>
     9 #include <iostream>
    10 #include <algorithm>
    11 using namespace std;
    12 const int MAXN=15001,MAXX=32002;
    13 int t[MAXX],n;
    14 int lb(int i){return i&-i;}
    15 void init(){memset(t,0,sizeof(t));}
    16 void add(int x,int v){for(int i=x;i<MAXX;i+=lb(i))t[i]+=v;}
    17 int sum(int x){int ans=0;for(int i=x;i;i-=lb(i))ans+=t[i];return ans;}
    18 
    19 int level[MAXN],x,y;
    20 int main(){
    21     scanf("%d",&n);
    22     for(int i=1;i<=n;i++)scanf("%d%d",&x,&y),level[sum(x+1)]++,add(x+1,1);
    23     for(int i=0;i<n;i++)printf("%d
    ",level[i]); 
    24     return 0;
    25 }
    ~~Jason_liu O(∩_∩)O
  • 相关阅读:
    近期目标
    HDU
    BZOJ
    UVALive
    UVA
    HNOI2004 宠物收养所 (平衡二叉树)
    UVA
    HDU
    POJ
    康托展开与逆康托展开模板(O(n^2)/O(nlogn))
  • 原文地址:https://www.cnblogs.com/JasonCow/p/12292308.html
Copyright © 2011-2022 走看看