日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接

//利用先前的根節點建樹 想一下不難寫。 #include <cstdio> #include <cctype> //#define gc() getchar() #define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++) const int N=1e6+5,MAXIN=2e6;int n,q,root[N],A[N]; char IN[MAXIN],*SS=IN,*TT=IN; struct Seg_Tree {#define lson son[x][0]#define rson son[x][1]int tot,val[N*21],son[N*21][2];void Build(int &x,int l,int r){x=++tot;if(l==r) val[x]=A[l];else{int m=l+r>>1;Build(lson,l,m), Build(rson,m+1,r);}}void Modify(int x,int &y,int l,int r,int p,int v){y=++tot;if(l==r) val[y]=v;else{int m=l+r>>1;if(p<=m) son[y][1]=rson, Modify(lson,son[y][0],l,m,p,v);else son[y][0]=lson, Modify(rson,son[y][1],m+1,r,p,v);}}int Query(int x,int l,int r,int p){if(l==r) return val[x];if(p<=(l+r>>1)) return Query(lson,l,l+r>>1,p);return Query(rson,(l+r>>1)+1,r,p);} }t; inline int read() {int now=0,f=1;register char c=gc();for(;!isdigit(c);c=gc()) if(c=='-') f=-1;for(;isdigit(c);now=now*10+c-'0',c=gc());return now*f; }int main() {n=read(),q=read();for(int i=1; i<=n; ++i) A[i]=read();t.Build(root[0],1,n);for(int opt,ver,p,i=1; i<=q; ++i){ver=read(), opt=read(), p=read();if(opt==1) t.Modify(root[ver],root[i],1,n,p,read());else root[i]=root[ver], printf("%d\n",t.Query(root[i],1,n,p));}return 0; }

轉載于:https://www.cnblogs.com/SovietPower/p/8641192.html

總結

以上是生活随笔為你收集整理的洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。