传送门

解题思路

  给每一时刻建一棵线段树维护当前时刻的值,然后修改的时候直接修改,查询的时候直接查,记住查询完后一定要复制。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>using namespace std;
const int MAXN = 1000005;inline int rd(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)) {f=ch=='-'?0:1;ch=getchar();}while(isdigit(ch))  {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return f?x:-x;
}int n,m,a[MAXN],rt[MAXN],cnt;
int val[MAXN*22],ls[MAXN*22],rs[MAXN*22];int build(int l,int r){int now=++cnt,mid=(l+r)>>1;if(l==r) {val[now]=rd();return now;}ls[now]=build(l,mid);rs[now]=build(mid+1,r);return now;
}int update(int pre,int l,int r,int x,int k){int now=++cnt,mid=(l+r)>>1;ls[now]=ls[pre];rs[now]=rs[pre];val[now]=val[pre];if(l==r) {val[now]=k;return now;}if(x<=mid) ls[now]=update(ls[pre],l,mid,x,k);else rs[now]=update(rs[pre],mid+1,r,x,k);return now;
}int query(int pre,int l,int r,int x){if(l==r) return val[pre];int mid=(l+r)>>1;if(x<=mid) return query(ls[pre],l,mid,x);else return query(rs[pre],mid+1,r,x);
}int main(){n=rd(),m=rd();rt[0]=build(1,n);int pre,op,x,y;for(int i=1;i<=m;i++){pre=rd(),op=rd(),x=rd();if(op==1) y=rd(),rt[i]=update(rt[pre],1,n,x,y);else printf("%d\n",query(rt[pre],1,n,x)),rt[i]=rt[pre];}   return 0;
}

转载于:https://www.cnblogs.com/sdfzsyq/p/9961290.html

LUOGU P3919 【模板】可持久化数组(主席树)相关推荐

  1. 线。段。树--树状数组-主席树

    简单了解一下线段树 以前写过的内容,搬运过来 线段树的应用场景:满足区间加法性质且多次查询,什么是区间加法性质,比如最大值,求和,树状数组.线段树.主席树依次. 线段树框架:建树--查询--更新... ...

  2. COGS-257-动态排名系统-树状数组+主席树

    描述 给定一个长度为N的已知序列A[i](1<=i<=N),要求维护这个序列,能够支持以下两种操作: 1.查询A[i],A[i+1],A[i+2],...,A[j](1<=i< ...

  3. HDU - 6704 K-th occurrence (后缀数组+主席树)

    题目链接 题意 QQQ次询问,每次询问求SSS的子串出现KKK次的位置 思路 刚开始想的是AC自动机,但是建自动机会超时,后来学长想到后缀数组+主席树的做法Orz...Orz...Orz... 出现K ...

  4. 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树

    题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...

  5. 洛谷 - P2163 [SHOI2007]园丁的烦恼(不带修二维数点-树状数组/主席树)

    题目链接:点击查看 题目大意:二维平面坐标系中给出 nnn 个坐标点,然后是 mmm 次询问,每次询问需要回答一个闭合矩阵中有多少个点 题目分析:想挂树套树来着,但是复杂度有点大.本题不带修且可以离线 ...

  6. HDU 3333 Turing Tree(树状数组/主席树)

    题意 给定一个长度为 \(n​\) 的序列,\(m​\) 个查询,每次查询区间 \([L,R]​\) 范围内不同元素的和. \(1\leq T \leq 10\) \(1 \leq n\leq 300 ...

  7. BZOJ3473:字符串(后缀数组,主席树,二分,ST表)

    Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 一 ...

  8. hdu 4417 Super Mario 树状数组||主席树

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Prob ...

  9. [NOI Online 2022 提高组] 丹钓战(单调栈 + 树状数组 / 主席树)

    problem luogu-P8251 solution 按照题意模拟单调栈. 求出对于 iii 而言,当时单调栈的栈顶元素记为 pip_ipi​. 如果到 iii 时,栈顶已经为 pip_ipi​ ...

  10. [HEOI2016/TJOI2016]字符串 (后缀数组+主席树+二分)

    description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 n 的字符串 s,和 m 个问题.佳媛姐姐必须正确回答这 m 个问 ...

最新文章

  1. 单片机中SDZ是什么意思_合泰单片机ADC转换程序
  2. [转]使用批处理设置、启动和停止服务
  3. 虚拟机出现蓝屏解决方法
  4. linux stop函数,perfmonctl()函数 Unix/Linux
  5. Angular使用总结 --- 模型驱动表单
  6. 火灾检测、人流量统计、安全帽检测,飞桨开源一键运行的产业案例教程
  7. 上周热点回顾(4.30-5.6)
  8. Android -----paint cap join 理解 ,paint画笔形状设置
  9. 身份证号码15位转18位
  10. 检测压缩包并处理的Linux脚本(解压、批量修改文件名、导入)分析
  11. 对接海康人脸识别api接口之PHP案例
  12. 我的世界服务器怎么修改名称,我的世界端游怎么改名字
  13. 高等数学关于切线,法线,切平面,法平面的详细解释
  14. Esp8266 进阶之路33【大神篇】如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用?
  15. 常与同好争高下,不与傻瓜论短长
  16. Nvidia显卡官方驱动下载地址
  17. byte[]与String互转对象和JSON相互转
  18. 深度可分离卷积(计算过程及代码实现)
  19. Android 培训课程V1.0
  20. 易经中的企业管理思想[转帖] 来源: 中大管理论坛 梁育民

热门文章

  1. 4.4使用@Enable*注释去切换配置
  2. SprinMVC解决URL多个参数
  3. 【渝粤教育】国家开放大学2018年秋季 3722-22T燃气输配工程 参考试题
  4. 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
  5. PETS:伯克利大神Sergey Levine指导的概率集成轨迹采样算法
  6. 【浙江大学PAT真题练习乙级】1001 害死人不偿命的(3n+1)猜想(15分)真题解析
  7. wiki——Isogeometric_analysis
  8. SharePoint Designer 2010中的外部内容类型-SQL Server
  9. C++自己实现一个String类
  10. JSON.parse()和JSON.stringify()的解析与用途