LGOJ P3919【模板】可持久化数组(可持久化线段树/平衡树)
代码
//可持久化线段树
#include <cstdio>
using namespace std;
struct node
{
node *Lnode,*Rnode;
int val;
void clone(node* N)
{
Lnode=N->Lnode;
Rnode=N->Rnode;
val=N->val;
return;
}
}tree[20000005],*root[1000005],*tail=tree;
int a[1000005];
node* build(int L,int R)
{
node *N=(++tail);
if(L==R)
{
N->val=a[L];
return N;
}
int M=(L+R)>>1;
N->Lnode=build(L,M);
N->Rnode=build(M+1,R);
return N;
}
node* modify(node* N,int L,int R,int pos,int val)
{
node *O=(++tail);
O->clone(N);
if(L==R)
{
O->val=val;
return O;
}
int M=(L+R)>>1;
if(pos<=M) O->Lnode=modify(N->Lnode,L,M,pos,val);
else O->Rnode=modify(N->Rnode,M+1,R,pos,val);
return O;
}
int query(node* N,int L,int R,int pos)
{
if(L==R) return N->val;
int M=(L+R)>>1;
if(pos<=M) return query(N->Lnode,L,M,pos);
return query(N->Rnode,M+1,R,pos);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
root[0]=build(1,n);
for(int i=1;i<=m;i++)
{
int v,opt,loc;
scanf("%d%d%d",&v,&opt,&loc);
if(opt==1)
{
int val;
scanf("%d",&val);
root[i]=modify(root[v],1,n,loc,val);
}
else
{
printf("%d\n",query(root[v],1,n,loc));
root[i]=root[v];
}
}
return 0;
}
LGOJ P3919【模板】可持久化数组(可持久化线段树/平衡树)的更多相关文章
- 洛谷 P3919 【模板】可持久化数组(可持久化线段树/平衡树)-可持久化线段树(单点更新,单点查询)
P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集 ...
- 洛谷——P3919 【模板】可持久化数组(可持久化线段树/平衡树)
P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集 ...
- luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树)(主席树)
luogu P3919 [模板]可持久化数组(可持久化线段树/平衡树) 题目 #include<iostream> #include<cstdlib> #include< ...
- Luogu P3919【模板】可持久化数组(可持久化线段树/平衡树)
题面:[模板]可持久化数组(可持久化线段树/平衡树) 不知道说啥,总之我挺喜欢自己打的板子的! #include<cstdio> #include<cstring> #incl ...
- P3919 【模板】可持久化数组 -初步探究主席树
本篇blog主要是给自己(大家)看的. 感谢longlongzhu123奆佬(此人初二LCT)的指点,使本蒟蒻可以快速开始主席树入门. what is 主席树? $ $主席树这个名字只不 ...
- Luogu P3919 【模板】可持久化数组 可持久化线段树
其实就是可持久化线段树的模板题线段树不会看这里 #include<bits/stdc++.h> ; using namespace std; ]; ],rc[N*],val[N*],cnt ...
- 洛谷P3919 【模板】可持久化数组(可持久化线段树/平衡树)
题目背景 UPDATE : 最后一个点时间空间已经放大 标题即题意 有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集) 题目描述 如题,你需要维护这样的一个长度为 N 的数组, ...
- P3919 【模板】可持久化数组(可持久化线段树/平衡树)
题目描述 如题,你需要维护这样的一个长度为 N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对于操作2,即为生成一个完全一 ...
- [Luogu 3919]【模板】可持久化数组(可持久化线段树/平衡树)
Description 如题,你需要维护这样的一个长度为 N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 此外,每进行一次操作(对于操作2,即为生 ...
随机推荐
- C#中$的用法
class Program { static void Main(string[] args) { string tbName = "User"; string colName = ...
- sqlmap常用命令
sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工具,只是一个便捷性问题,sql注入另一方面就是手工党了,这个就另当别论了.今天把我一直 ...
- 审核被拒Guideline 2.1 - Information Needed we are unable to find 账号登录 option
Guideline 2.1 - Information Needed We were unable to sign in to review your app with the demo accoun ...
- 操作系统与cpu
- 添加新网络模型后运行报错:未定义的参数:ps_roipooling param
现象描述:在新增了具有自定义的data层或者loss层的网路之后,工程运行会报错: 疑惑:并没有这样的参数新增,并且前向的deploy文件已经将自定义的loss以及data等都去掉了: 可能的原因:虽 ...
- 【托业】【怪兽】TEST01
101. respectable 值得尊敬的(形容人或事物) respectful 态度恭敬的(形容人) respecting 关于…… respective 各自的 102. hardly 几乎没有 ...
- SQL SERVER数据库附加是只读的解决方法
使用sa登录SQL Server2008附加数据库,附加之后数据库为只读的, 点数据库-->“属性”-->“选项”-->“状态”, 发现“数据库为只读”这一项为True,改为fals ...
- Oracle SQL Loader
C:/Documents and Settings/WWJD>sqlldr SQL :: Copyright (c) , , Oracle. All rights reserved. 用法: S ...
- dubbo搭建
1.安装java : yum install java 2.下载Tomcat: wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.1 ...
- JAVA 11初体验
JAVA 11初体验 随着JAVA没半年发布一次新版本,前几天JAVA 11隆重登场.在JAVA 11中,增加了一些新的特性和api, 同时也删除了一些特性和api,还有一些性能和垃圾回收的改进. 作 ...