树状数组-杭电-5592
来源:互联网 发布:mysql中timestampdiff 编辑:程序博客网 时间:2024/06/06 05:44
using namespace std;int num[MAX];int ans[MAX];int n;int lowbit (int a){ return a&(-a);}void update (int x,int date){ while (x<=n) { num[x]+=date; x+=lowbit(x); }}int make_sum(int x){ int as=0; while (x>0) { as+=num[x]; x-=lowbit(x); } return as;}int make_who(int x)//找出第k大的位置{ if (make_sum(n)<x) return -1; int l,r,mid; l=1; r=n; mid=(int)((l+r)/2); while (r>l) { if (make_sum(mid)<x) l=mid+1; else r=mid; mid=(int)((l+r)/2); } return l;}int main(){ int i,j,k; int t,te; int c[MAX]; scanf ("%d",&t); while (t--) { memset(num,0,sizeof(num)); memset(ans,0,sizeof(ans)); memset(c,0,sizeof(c)); scanf ("%d",&n); for (i=1; i<=n; i++) { scanf ("%d",&c[i]); update(i,1); } te=0; for (i=n; i>0; i--) { int ca; ca=c[i]-c[i-1]; ans[i]=make_who(n-te-ca); update(ans[i],-1); te++; } for (i=1; i<=n; i++) { if (i==1) printf("%d",ans[i]); else printf(" %d",ans[i]); } printf("\n"); } return 0;}
0 0
- 树状数组-杭电-5592
- 杭电oj 1541 树状数组
- 杭电OJ 敌兵布阵 树状数组
- 杭电 2852 树状数组+二分
- 杭电 1556 (树状数组)
- 杭电 1541 Stars 树状数组
- 树状数组简单题----杭电1541
- 杭电Sort it 2689树状数组
- 【树状数组 + 简单题】杭电 hdu 1166 敌兵布阵
- 杭电 OJ Color the ball 树状数组
- 【树状数组+简单题】杭电 hdu 2689 Sort it
- 杭电 2838 牛叉的树状数组
- 【树状数组+三维】杭电 hdu 3584 Cube
- 【树状数组+二维】杭电 hdu 1892 See you~
- 杭电hdu 2492 Ping pong 树状数组
- 杭电1166 敌兵布阵 线段树and树状数组
- 杭电1166敌兵布阵 (用的树状数组)
- 杭电1066 敌兵布阵(树状数组)
- C++的一些知识
- 认识系统服务(daemons)
- HDU 1082 Matrix Chain Multiplication 逆波兰式
- Javascript 题目集-题壹
- Unity加载和内存管理机制(一)
- 树状数组-杭电-5592
- 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(Python)
- linux系统原理中的一些理解D
- swipe left for/swipe right for 中英文转换问题
- android notification设置提示音
- hiho刷题日记——第三十一天小Hi小Ho的惊天大作战:扫雷·二
- Unity加载和内存管理机制(二)
- ffmpeg 实例编码、转码小结
- VIJOS-P1025 小飞侠的游园方案