zoukankan      html  css  js  c++  java
  • 可持久化数组

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #define maxn 1000010
    using namespace std;
    template<typename T>
    inline void read(T &x){
        x=0;bool flag=0;char c=getchar();
        for(;!isdigit(c);c=getchar()) if(c=='-') flag=1;
        for(;isdigit(c);c=getchar()) x=x*10+(c^48);
        if(flag) x=-x;
    } 
    
    int n,m,a[maxn],num,v,loc,value;
    int cnt,root[20*maxn],ls[20*maxn],rs[20*maxn],val[20*maxn];
    
    void build(int &t,int l,int r){//注意要取地址 
        t=++cnt;
        if(l==r){
            val[t]=a[l];
            return ;
        }
        int mid=(l+r)/2;
        build(ls[t],l,mid);
        build(rs[t],mid+1,r);
    }
    
    void change(int &t,int k,int l,int r,int pos,int v){//注意要取地址 
        t=++cnt;
        ls[t]=ls[k];rs[t]=rs[k];val[t]=val[k];
        if(l==r){
            val[t]=v;
            return ;
        }
        int mid=(l+r)/2;
        if(pos<=mid) change(ls[t],ls[k],l,mid,pos,v);
        if(pos>mid) change(rs[t],rs[k],mid+1,r,pos,v);
    }
    
    int query(int t,int l,int r,int pos){
        if(l==r) return val[t];
        int mid=(l+r)/2;
        if(pos<=mid) return query(ls[t],l,mid,pos);
        if(pos>mid) return query(rs[t],mid+1,r,pos);
    }
    
    int main(){
        read(n),read(m);
        for(int i=1;i<=n;i++) read(a[i]);
        build(root[0],1,n);
        for(int i=1;i<=m;i++){
            read(v),read(num),read(loc);
            if(num==1){
                read(value);
                change(root[i],root[v],1,n,loc,value);
            }
            if(num==2){
                cout<<query(root[v],1,n,loc)<<endl;
                root[i]=root[v];
            }
        }
        return 0;
    } 
  • 相关阅读:
    [From 11.1~11.4]事件
    [From 10.1~10.5] 对象和集合初始化器(C#语法糖系列)
    [From 9.3]out和ref关键字
    [From 8.5]转换操作符方法
    将博客搬至CSDN
    QPS 与 TPS 简介
    在cenos中,通过subversion源码进行安装
    no acceptable C compiler found in $PATH
    tgz解压
    程序中的@Override是什么意思?
  • 原文地址:https://www.cnblogs.com/DReamLion/p/14435270.html
Copyright © 2011-2022 走看看