cogs2554 [福利]可持久化线段树
cogs2554 [福利]可持久化线段树
原题链接
每次修改复制一遍就行了。。。
1A!!!
// It is made by XZZ
#include<cstdio>
#include<algorithm>
#define Fname "longterm_segtree"
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
#define mid ((l+r)>>1)
typedef long long ll;
il int gi(){
    rg int x=0,f=1;rg char ch=getchar();
    while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
    while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
    return x*f;
}
typedef struct node* point;
struct node{
    int max;
    point ls,rs;
    node(int _max){max=_max,ls=rs=NULL;}
};
point root[100001];
int num[10001];
point build(int l,int r){
    point now=new node(19260817);
    if(l==r)now->max=num[l];
    else now->ls=build(l,mid),now->rs=build(mid+1,r),now->max=max(now->ls->max,now->rs->max);
    return now;
}
il int Max(point now,int l,int r,int ll,int rr){
    if(ll<=l&&r<=rr)return now->max;
    if(mid<rr)
	if(mid+1>ll)return max(Max(now->ls,l,mid,ll,rr),Max(now->rs,mid+1,r,ll,rr));
	else return Max(now->rs,mid+1,r,ll,rr);
    else return Max(now->ls,l,mid,ll,rr);
}
il vd Update(point&now,point fr,int l,int r,int pos,int num){
    now=new node(19260817),*now=*fr;
    if(l==r){now->max=num;return;}
    if(pos<=mid)Update(now->ls,fr->ls,l,mid,pos,num);
    else Update(now->rs,fr->rs,mid+1,r,pos,num);
    now->max=max(now->ls->max,now->rs->max);
}
int main(){
    freopen(Fname".in","r",stdin);
    freopen(Fname".out","w",stdout);
    int n=gi(),q=gi(),cnt=0;
    rep(i,1,n)num[i]=gi();
    root[++cnt]=build(1,n);
    int opt;
    int k,a,b;
    while(q--){
	opt=gi();
	k=gi(),a=gi(),b=gi();
	if(opt==0)printf("%d\n",Max(root[k],1,n,a,b));
	else Update(root[++cnt],root[k],1,n,a,b);
    }
    return 0;
}
好慢mdzz。。。
cogs2554 [福利]可持久化线段树的更多相关文章
- cogs 2554. [福利]可持久化线段树
		
题目链接 cogs 2554. [福利]可持久化线段树 题解 没有 代码 #include<cstdio> #include<cstring> #include<algo ...
 - AC日记——[福利]可持久化线段树 cogs 2554
		
2554. [福利]可持久化线段树 ★★☆ 输入文件:longterm_segtree.in 输出文件:longterm_segtree.out 简单对比时间限制:3 s 内存限制:2 ...
 - YSZOJ:#247. [福利]可持久化线段树 (最适合可持久化线段树入门)
		
题目链接:https://syzoj.com/problem/247 解题心得: 可持久化线段树其实就是一个线段树功能的加强版,加强在哪里呢?那就是如果一颗普通的线段树多次修改之后还能知道最开始的线段 ...
 - [COGS2554][SYZOJ247][福利]可持久化线段树
		
思路: 主席树模板. 注意内存的分配,原始的线段树有$2n$个结点,每次更新时最多增加$log(n)$个结点,总共有$q$次询问,所以存储结点的数组大小为$2N+q log(n)$. #include ...
 - PYOJ 44. 【HNSDFZ2016 #6】可持久化线段树
		
#44. [HNSDFZ2016 #6]可持久化线段树 统计 描述 提交 自定义测试 题目描述 现有一序列 AA.您需要写一棵可持久化线段树,以实现如下操作: A v p x:对于版本v的序列,给 A ...
 - 【BZOJ-3673&3674】可持久化并查集       可持久化线段树 + 并查集
		
3673: 可持久化并查集 by zky Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 1878 Solved: 846[Submit][Status ...
 - 【BZOJ-2653】middle      可持久化线段树 + 二分
		
2653: middle Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1298 Solved: 734[Submit][Status][Discu ...
 - HDU 4866 Shooting(持久化线段树)
		
view code//第二道持久化线段树,照着别人的代码慢慢敲,还是有点不理解 #include <iostream> #include <cstdio> #include & ...
 - 【BZOJ-3653】谈笑风生       DFS序 + 可持久化线段树
		
3653: 谈笑风生 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 628 Solved: 245[Submit][Status][Discuss] ...
 
随机推荐
- nowcoder模拟赛
			
R1 D1 普及组... T1/T2 咕 T3 链接:C 小A有一个只包含左右括号的字符串S.但他觉得这个字符串不够美观,因为它不是一个合法的括号串.一个合法的括号串是这样定义的: ()是合法的括号串 ...
 - weblogic远程调试XMLDecoder RCE CVE-2017-10271
			
首先说一下远程调试的配置,首先在weblogic的启动文件加入如下配置,开启服务器远程调试端口就是9999: 第二步,建立一个java的空项目. 第三步将weblogic的所有jar包拷出来,放到一个 ...
 - 利用n 升级工具升级Node.js版本及在mac环境下的坑
			
一.利用n 升级Node.js 最近在用NPM安装一个nodejs工具时发现,我的nodejs的版本有些旧了.这不是大问题,只要升级就可以了,当然,重新从nodejs.org最新版本是一种方法,但我想 ...
 - 谷歌浏览器linux,windows下载
			
https://www.chromedownloads.net/ 提取码自己行提取rpm安装包
 - css 写打印样式问题
			
(1)背景颜色打印不出来问题解决方法 background样式要加上 !important: color样式要加上 !important: -webkit-print-color-adjust: ...
 - Win 10安装11g 客户端条件检查失败,INS-30131  无法从节点 "desktop-njm3a7m" 检索 exectask 的版本
			
Win 10安装11g 客户端条件检查失败,[INS-30131] 执行安装程序验证所需的初始设置失败.无法从节点 "desktop-njm3a7m" 检索 exectask 的版 ...
 - 使用属性Props完成一张卡片
			
一:我们先安装bootstrap,为了使我们的样式好看些 cnpm install bootstrap --save 二:我们在index.js中引入bootstap Import ‘bootst ...
 - 百度地图中找不到BMap的解决
			
一般情况下是引用的问题,产生的原因大概有两种 1.不同架构的引用方式不同,引用js的方式不同导致 2.自身调用顺序有误 官方的引用方式是使用标签引入,示例 <script type=" ...
 - java8 新特性 Stream流 分组 排序 过滤 多条件去重
			
private static List<User> list = new ArrayList<User>(); public static void main(String[] ...
 - 『C++』Temp_2019_03_14  不同类的循环引用
			
#include <iostream> #include <string> #include <regex> using namespace std; //提前声明 ...