zoj 3635 树状数组加二分
2012-08-26 23:42
295 查看
以前这种没写过,今天写了一下,当模板用了
#include<stdio.h> #include<string.h> #define maxn 50010 int a[maxn]; int b[maxn]; int n; int lowbit(int x) { return x&(-x); } int sum(int end) { int sum=0; while(end>0) { sum+=a[end]; end-=lowbit(end); } return sum; } void add(int pos,int num) { while(pos<=n) { a[pos]+=num; pos+=lowbit(pos); } } int main() { while(scanf("%d",&n)==1) { memset(a,0,sizeof(a)); int i,j,x; for(i=1;i<=n;i++) add(i,1); for(i=1;i<=n;i++) { scanf("%d",&x); int l=1,r=n; while(l<=r) { int mid=(l+r)/2; if(sum(mid)>=x) r=mid-1; else l=mid+1; } b[i]=l; add(l,-1); } int m; scanf("%d",&m); while(m--) { scanf("%d",&x); if(m) printf("%d ",b[x]); else printf("%d",b[x]); } printf("\n"); } return 0; }
相关文章推荐
- ZOJ 3635 Cinema in Akiba (树状数组+二分)
- zoj 3635 Cinema in Akiba(树状数组+二分)
- ZOJ 3635——Cinema in Akiba(树状数组+二分)
- Zoj 3635 <树状数组+二分>
- ZOJ 3635 Cinema in Akiba(树状数组 + 二分)
- [bzoj1901][zoj2112][Dynamic Rankings] (整体二分+树状数组 or 动态开点线段树 or 主席树)
- zoj 3635(树状数组求K大)
- ZOJ 3279 Ants 二分树状数组
- ZOJ 3279 Ants 二分树状数组
- POJ 题目2182 Lost Cows(树状数组+二分)
- hdu 5700 区间交(树状数组+二分)
- 【BZOJ2738】矩阵乘法(整体二分+二位树状数组)
- 【POJ2104】【整体二分+树状数组】区间第k大
- 高级数据结构(树状数组套主席树):ZOJ 2112 Dynamic Rankings
- ACM学习历程—HDU5592 ZYB's Premutation(逆序数 && 树状数组 && 二分)(BestCoder Round #65 1003)
- POJ 2886 Who Gets the Most Candies?(树状数组+二分)
- 蛤蛤蛤(树状数组 | 二分)
- BZOJ2738【整体二分】【树状数组】
- POJ3784---Running Median(树状数组+二分)
- hdu 5021 Revenge of kNN II(树状数组,离散化,二分)