题目链接

//利用先前的根节点建树 想一下不难写。
#include <cstdio>
#include <cctype>
//#define gc() getchar()
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
const int N=1e6+5,MAXIN=2e6;int n,q,root[N],A[N];
char IN[MAXIN],*SS=IN,*TT=IN;
struct Seg_Tree
{#define lson son[x][0]#define rson son[x][1]int tot,val[N*21],son[N*21][2];void Build(int &x,int l,int r){x=++tot;if(l==r) val[x]=A[l];else{int m=l+r>>1;Build(lson,l,m), Build(rson,m+1,r);}}void Modify(int x,int &y,int l,int r,int p,int v){y=++tot;if(l==r) val[y]=v;else{int m=l+r>>1;if(p<=m) son[y][1]=rson, Modify(lson,son[y][0],l,m,p,v);else son[y][0]=lson, Modify(rson,son[y][1],m+1,r,p,v);}}int Query(int x,int l,int r,int p){if(l==r) return val[x];if(p<=(l+r>>1)) return Query(lson,l,l+r>>1,p);return Query(rson,(l+r>>1)+1,r,p);}
}t;
inline int read()
{int now=0,f=1;register char c=gc();for(;!isdigit(c);c=gc()) if(c=='-') f=-1;for(;isdigit(c);now=now*10+c-'0',c=gc());return now*f;
}int main()
{n=read(),q=read();for(int i=1; i<=n; ++i) A[i]=read();t.Build(root[0],1,n);for(int opt,ver,p,i=1; i<=q; ++i){ver=read(), opt=read(), p=read();if(opt==1) t.Modify(root[ver],root[i],1,n,p,read());else root[i]=root[ver], printf("%d\n",t.Query(root[i],1,n,p));}return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/8641192.html

洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)相关推荐

  1. 【洛谷5251】[LnOI2019] 第二代图灵机(线段树+ODT)

    点此看题面 大致题意: 有单点修改数字和区间着色两种修改操作,询问你某段区间内包含所有颜色且数字和最小的子区间的数字和,或某段区间内没有重复颜色且数字和最大的子区间的数字和.数据随机. \(ODT\) ...

  2. 洛谷P2073 送花 [2017年6月计划 线段树01]

    P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花 ...

  3. 【洛谷AT2442】フェーン現象(Foehn Phenomena)【线段树】

    linklinklink 分析: 都说是裸差分 那就线段树做( 海拔的上升与下降 就区间修改 答案就单点查询 具体的就跟题意模拟了 然后注意a0a_0a0​是000 那n,x,yn,x,yn,x,y啥 ...

  4. 洛谷P3120 [USACO15FEB]牛跳房子(动态开节点线段树)

    题意 题目链接 Sol \(f[i][j]\)表示前\(i\)行\(j\)列的贡献,转移的时候枚举从哪里转移而来,复杂度\(O(n^4)\) 然后考虑每一行的贡献,动态开节点线段树维护一下每种颜色的答 ...

  5. 洛谷·【模板】点分树 | 震波【including 点分树

    初见安-这里是传送门:洛谷P6329 [模板]点分树 | 震波 一.点分树 其实你会点分治的话,点分树就是把点分治时的重心提出来重新连城一棵树. 比如当前点是u,求出子树v的重心root后将root与 ...

  6. [BZOJ4889][洛谷P3759][TJOI2017]不勤劳的图书管理员 分块+树状数组

    题目描述 加里敦大学有个帝国图书馆,小豆是图书馆阅览室的一个书籍管理员.他的任务是把书排成有序的,所以无序的书让他产生厌烦,两本乱序的书会让小豆产生这两本书页数的和的厌烦度.现在有n本被打乱顺序的书, ...

  7. 专题·树链剖分【including 洛谷·【模板】树链剖分

    初见安~~~终于学会了树剖~~~ [兴奋]当初机房的大佬在学树剖的时候我反复强调过:"学树剖没有前途的!!!" 恩.真香. 一.重链与重儿子 所谓树剖--树链剖分,就是赋予一个链的 ...

  8. 【模板】可持久化数组(可持久化线段树/平衡树)

    题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集) 题目描述 如题,你需要维护这样的一个长度为 N N N ...

  9. P3919 【模板】可持久化数组(可持久化线段树/平衡树)

    题目描述 如题,你需要维护这样的一个长度为 N  的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对于操作2,即为生成一个完全一 ...

最新文章

  1. Java 实例化的理解
  2. QT学习:读写文本文件
  3. BZOJ3527: [Zjoi2014]力 [FFT]
  4. 传智杯Java志愿者传智专修学院总共召集了n位志愿者来负责打扫活动,现在需要你负责帮忙统计每位志愿者的工作情况,用来制作光荣榜,给他们发小花花
  5. 在艰苦年代,买不起万用表,怎么测量电路电压?
  6. 进制转换练习-其它进制转换为十进制
  7. mysql where 大小写_java – 使用select where where Mysql在Mysql中区分大小写
  8. 随想一·杨柳岸晓风残月
  9. 运用Links方法安装插件
  10. matlab 音频处理、Python音频处理
  11. 初学JAVA,开发环境的搭建(JDK和Eclipse的安装)
  12. 施乐s2110进入维修模式,富士施乐s2110恢复出厂
  13. WEB表单设计学习心得
  14. SAP License:SAP五大主流ERP一览
  15. 如何利用Python开发App?
  16. MTK交换机PHY 方案Airoha达发(econet)概要
  17. 【拜占庭将军问题】这一计谋,可以让诸葛丞相兴复汉室
  18. 2019年马上结束了,当初立的flag如何了?
  19. 订单查询系统c语言作业,C语言设计订单管理系统答题.doc
  20. CSDN日报190318:简单爬虫:给女友定时发送睡前小故事

热门文章

  1. python flask高级编程之restful_python Flask实现restful api service
  2. css3 下边框缓缓划过_干货来袭!web前端开发工程师必看之如何使用CSS3实现瀑布流效果?...
  3. Class.forName()、Class.class、getClass() 区别
  4. python聚类分析案例_深度解读|如何构建用户分级体系实现精细化运营?附案例实操...
  5. html字符串变量,字符串变量中的Python HTML
  6. 基于Java+SpringBoot+vue+element实现前后端分离蛋糕商城系统详细设计
  7. java jbutton 禁用_java-禁用后对jButton执行的操作
  8. 怎么分辨学校计算机sql版本,怎么筛选出每个年级每个学校有多少个班级
  9. 支持串行隔离级别_从0到1理解数据库事务(上):并发问题与隔离级别
  10. java - 求a+aa+aaa+aa...a之和