ZOJ 3635 线段树
来源:互联网 发布:好用的网络机顶盒软件 编辑:程序博客网 时间:2024/05/18 15:05
线段树维护的是区间有多少个空位置,每次查询第X个空位置在哪,sum[rt]>=X就向左区间找,sum[rt]<X就向又区间找。
#include <cstdio>#include <algorithm>#include <iostream>using namespace std;#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 55555;int n,m;int sum[maxn<<2],a[maxn];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void build(int l,int r,int rt) { if (l==r) {sum[rt]=1;return;} int m=(l+r)>>1; build(lson); build(rson); pushup(rt);}int update(int l,int r,int rt,int cnt){ int ret,m=(l+r)>>1; if(l==r) { sum[rt]=0; return l; } if(cnt<=sum[rt<<1]) ret=update(lson,cnt); else ret=update(rson,cnt-sum[rt<<1]); pushup(rt); return ret;}int main(){ int x; while(~scanf("%d",&n)) { build(1,n,1); for(int i=1;i<=n;i++) { scanf("%d",&x); a[i]=update(1,n,1,x); } scanf("%d",&m); for(int i=1;i<=m;i++) { scanf("%d",&x); if(i==1) printf("%d",a[x]); else printf(" %d",a[x]); } puts(""); } return 0;}
4 0
- zoj 3635 线段树
- ZOJ 3635 线段树
- ZOJ 3635 线段树
- ZOJ 3635 Cinema in Akiba【线段树】
- zoj 1610 线段树
- zoj 1610 线段树
- zoj 3724 线段树
- ZOJ 3686 线段树
- zoj 3299 线段树
- 线段树 ZOJ 3574
- ZOJ 3299 线段树
- ZOJ 3772 线段树
- ZOJ 1610 线段树
- zoj 1610 线段树
- ZOJ 3324 Machine(线段树)
- zoj 3540 线段树笔记
- ZOJ 2900 Icecream(线段树)
- ZOJ 3279 Ants(线段树)
- 广州传智播客PHP培训师生共庆生日
- svn 批量添加没有加入版本控制的文件命令
- 国内主流报表调研总结
- 调用CALL TRANSACTION的三种方法
- 用户数据验证
- ZOJ 3635 线段树
- Web_PHP_DedeCMS_文章编辑时,回车不换行问题解决;
- maven相关内置变量
- win7 IE10无法启动解决(无响应)
- Git服务器代理上网安装出现问题的几个解决办法。
- BlueTooth: 蓝牙4.0BLE 芯片cc2540和cc2541 128x64 oled显示屏驱动
- Linux环境编程之进程(六):进程组
- Lazy Math Instructor - POJ 1686 栈+提比的强行AC技能
- cocos2d-x3.0