LUOGU P3919 【模板】可持久化数组(主席树)
传送门
解题思路
给每一时刻建一棵线段树维护当前时刻的值,然后修改的时候直接修改,查询的时候直接查,记住查询完后一定要复制。
代码
#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 【模板】可持久化数组(主席树)相关推荐
- 线。段。树--树状数组-主席树
简单了解一下线段树 以前写过的内容,搬运过来 线段树的应用场景:满足区间加法性质且多次查询,什么是区间加法性质,比如最大值,求和,树状数组.线段树.主席树依次. 线段树框架:建树--查询--更新... ...
- COGS-257-动态排名系统-树状数组+主席树
描述 给定一个长度为N的已知序列A[i](1<=i<=N),要求维护这个序列,能够支持以下两种操作: 1.查询A[i],A[i+1],A[i+2],...,A[j](1<=i< ...
- HDU - 6704 K-th occurrence (后缀数组+主席树)
题目链接 题意 QQQ次询问,每次询问求SSS的子串出现KKK次的位置 思路 刚开始想的是AC自动机,但是建自动机会超时,后来学长想到后缀数组+主席树的做法Orz...Orz...Orz... 出现K ...
- 【bzoj3744】Gty的妹子序列 分块+树状数组+主席树
题目描述 我早已习惯你不在身边, 人间四月天 寂寞断了弦. 回望身后蓝天, 跟再见说再见-- 某天,蒟蒻Autumn发现了从 Gty的妹子树(bzoj3720) 上掉落下来了许多妹子,他发现 她们排成 ...
- 洛谷 - P2163 [SHOI2007]园丁的烦恼(不带修二维数点-树状数组/主席树)
题目链接:点击查看 题目大意:二维平面坐标系中给出 nnn 个坐标点,然后是 mmm 次询问,每次询问需要回答一个闭合矩阵中有多少个点 题目分析:想挂树套树来着,但是复杂度有点大.本题不带修且可以离线 ...
- HDU 3333 Turing Tree(树状数组/主席树)
题意 给定一个长度为 \(n\) 的序列,\(m\) 个查询,每次查询区间 \([L,R]\) 范围内不同元素的和. \(1\leq T \leq 10\) \(1 \leq n\leq 300 ...
- BZOJ3473:字符串(后缀数组,主席树,二分,ST表)
Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k. 接下来n行每行一个字符串. Output 一 ...
- hdu 4417 Super Mario 树状数组||主席树
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Prob ...
- [NOI Online 2022 提高组] 丹钓战(单调栈 + 树状数组 / 主席树)
problem luogu-P8251 solution 按照题意模拟单调栈. 求出对于 iii 而言,当时单调栈的栈顶元素记为 pip_ipi. 如果到 iii 时,栈顶已经为 pip_ipi ...
- [HEOI2016/TJOI2016]字符串 (后缀数组+主席树+二分)
description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 n 的字符串 s,和 m 个问题.佳媛姐姐必须正确回答这 m 个问 ...
最新文章
- 单片机中SDZ是什么意思_合泰单片机ADC转换程序
- [转]使用批处理设置、启动和停止服务
- 虚拟机出现蓝屏解决方法
- linux stop函数,perfmonctl()函数 Unix/Linux
- Angular使用总结 --- 模型驱动表单
- 火灾检测、人流量统计、安全帽检测,飞桨开源一键运行的产业案例教程
- 上周热点回顾(4.30-5.6)
- Android -----paint cap join 理解 ,paint画笔形状设置
- 身份证号码15位转18位
- 检测压缩包并处理的Linux脚本(解压、批量修改文件名、导入)分析
- 对接海康人脸识别api接口之PHP案例
- 我的世界服务器怎么修改名称,我的世界端游怎么改名字
- 高等数学关于切线,法线,切平面,法平面的详细解释
- Esp8266 进阶之路33【大神篇】如何优雅地像乐鑫原厂封装esp8266底层寄存器的逻辑思维,做成自己的静态库库文件,让第三方人使用?
- 常与同好争高下,不与傻瓜论短长
- Nvidia显卡官方驱动下载地址
- byte[]与String互转对象和JSON相互转
- 深度可分离卷积(计算过程及代码实现)
- Android 培训课程V1.0
- 易经中的企业管理思想[转帖] 来源: 中大管理论坛 梁育民
热门文章
- 4.4使用@Enable*注释去切换配置
- SprinMVC解决URL多个参数
- 【渝粤教育】国家开放大学2018年秋季 3722-22T燃气输配工程 参考试题
- 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
- PETS:伯克利大神Sergey Levine指导的概率集成轨迹采样算法
- 【浙江大学PAT真题练习乙级】1001 害死人不偿命的(3n+1)猜想(15分)真题解析
- wiki——Isogeometric_analysis
- SharePoint Designer 2010中的外部内容类型-SQL Server
- C++自己实现一个String类
- JSON.parse()和JSON.stringify()的解析与用途