浅谈线段树和树状数组:https://www.cnblogs.com/AKMer/p/9946944.html

题目传送门:http://poj.org/problem?id=2182

线段树,倒着确定每一个数字。因为最后一个是唯一的,得知最后一个是什么之后倒数第二个就是唯一的了。每次询问[\(1,n\)]中还没有出现的数字第\(k\)大,直接在线段树上找。如果左儿子里可以用的数字个数大于\(k\),那么就去左儿子里面找,否则就去右儿子里找第\(k\)-左儿子可用数字个数大的数。

时间复杂度:\(O(nlogn)\)

空间复杂度:\(O(n)\)

代码如下:

#include <cstdio>
using namespace std; const int maxn=8005; int n;
int a[maxn],ans[maxn]; int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
} struct segment_tree {
int tree[maxn<<2]; void updata(int p) {
tree[p]=tree[p<<1]+tree[p<<1|1];
} void build(int p,int l,int r) {
if(l==r) {tree[p]=1;return;}//初始每个数字都能用
int mid=(l+r)>>1;
build(p<<1,l,mid);build(p<<1|1,mid+1,r);
updata(p);
} int query(int p,int l,int r,int rk) {
if(l==r) {
tree[p]=0;
return l;//我把query和change写一起了。
}
int mid=(l+r)>>1,res;
if(tree[p<<1]>=rk)res=query(p<<1,l,mid,rk);
else res=query(p<<1|1,mid+1,r,rk-tree[p<<1]);
updata(p);return res;
}
}T; int main() {
n=read();T.build(1,1,n);
for(int i=2;i<=n;i++)
a[i]=read();
for(int i=n;i;i--)
ans[i]=T.query(1,1,n,a[i]+1);
for(int i=1;i<=n;i++)
printf("%d\n",ans[i]);//倒着确定正着输出
return 0;
}

最新文章

  1. AutoCAD系统变量一览表
  2. Web前端开发工具总结
  3. HTML中的按钮
  4. iOS - OC RunTime 运行时
  5. [开发笔记]-“在引用COM组件时,出现了无法嵌入互操作类型。。。”的错误
  6. PHP数组的定义和遍历
  7. Python网页解析
  8. java中的xpath,读取xml文档。
  9. android网络编程之HttpUrlConnection的讲解--实现文件断点下载
  10. 实战开发-》融云tp3.2.3
  11. Redis Crackit漏洞防护
  12. 团队服务器搭建(搭建php环境和安装在线mysql管理工具phpmyadmin)
  13. Linux学习---位运算符
  14. javascript中startswith和endsWidth 与 es6中的 startswith 和 endsWidth
  15. [朴孝敏][Ooh La La]
  16. apache httpd.conf
  17. cout&lt;&lt;endl 本质探索
  18. java里 equals和== 区别
  19. facebook和twitter的截图分享
  20. 【java基础】java关键字final

热门文章

  1. js中比較好的继承方式
  2. Spark源码分析之五:Task调度(一)
  3. EasyUI触发方法、触发事件、创建对象的格式??
  4. 10 redis--频道发布与消息订阅
  5. 【React Native开发】React Native控件之RefreshControl组件具体解释(21)
  6. php部分:网页中报表的打印,并用CSS样式控制打印的部分;
  7. 模块:(日期选择)jquery、bootstrap实现日期下拉选择+bootstrap jquery UI自带动画的日期选择器
  8. nagios-plugins安装报错--with-mysql: no
  9. sqlite与sqlserver区别
  10. 搭建SVN服务器详细教程