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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ 3786: 星系探索 欧拉游览树

發布時間:2024/10/12 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 3786: 星系探索 欧拉游览树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個叫 Euler-Tour-Tree 的數據結構,說白了就是用 Splay_Tree 維護歐拉序

#include <cstring> #include <algorithm> #include <string> #include <cstdio>using namespace std;void setIO(string a){ freopen((a+".in").c_str(),"r",stdin);freopen((a+".out").c_str(),"w",stdout); }#define maxn 300000 #define ll long longint euler[maxn], w[maxn], cnt=1; int head[maxn],to[maxn],nex[maxn],edges,root; ll sumv[maxn], val[maxn], lazy[maxn]; void addedge(int u,int v){nex[++edges]=head[u],head[u]=edges,to[edges]=v; }void dfs(int u){euler[++cnt]=u*2, val[u*2]=w[u];for(int v=head[u];v;v=nex[v])dfs(to[v]);euler[++cnt]=u*2+1, val[u*2+1]=-w[u]; }struct Splay_Tree{int f[maxn],ch[maxn][2],sta[maxn],siz[maxn];int rson(int x){return ch[x][1];}int lson(int x){return ch[x][0];}int get(int x){return ch[f[x]][1]==x;}void update(int x,int c){val[x]+=(x%2==0?1:-1)*c;lazy[x]+=c;sumv[x]+=siz[x]*c;}void pushup(int x){ sumv[x]=sumv[lson(x)]+sumv[rson(x)]+val[x];siz[x]=siz[lson(x)]+siz[rson(x)];siz[x]+=(x>=200099 ? 0: (x%2==0?1:-1));}void pushdown(int x){if(lazy[x]) update(lson(x),lazy[x]), update(rson(x),lazy[x]),lazy[x]=0;} int pre(int x){splay(x,root);x=lson(root);while(rson(x)) x=rson(x);return x;}int las(int x){splay(x,root);x=rson(root);while(lson(x)) x=lson(x);return x;}void build(int l,int r,int &o,int fa){if(l>r)return;int mid=(l+r)>>1;o=euler[mid], f[o]=fa;build(l,mid-1,ch[o][0],o);build(mid+1,r,ch[o][1],o);pushup(o);}void rotate(int x){int old=f[x], oldf=f[old], which=get(x);ch[old][which]=ch[x][which^1], f[ch[old][which]]=old;ch[x][which^1]=old,f[old]=x,f[x]=oldf;if(oldf) ch[oldf][ch[oldf][1]==old]=x;pushup(old),pushup(x);}void splay(int x,int &tar){int v=0,u=x,a=f[tar];while(u!=a) sta[++v]=u,u=f[u];while(v) pushdown(sta[v--]);for(int fa;(fa=f[x])!=a;rotate(x))if(f[fa]!=a) rotate(get(fa)==get(x)?fa:x);tar=x;}void opt1(int a){int x=las(a*2);splay(200100,root),splay(x,ch[root][1]);printf("%lld\n",sumv[ch[ch[root][1]][0]]);}void opt2(int a,int b){int x=pre(a*2),y=las(a*2+1),tmp;splay(x,root),splay(y,ch[root][1]);tmp=ch[ch[root][1]][0], ch[ch[root][1]][0]=f[tmp]=0;pushup(ch[root][1]), pushup(root);x=las(b*2);splay(b*2,root), splay(x,ch[root][1]);ch[ch[root][1]][0]=tmp,f[tmp]=ch[root][1];pushup(ch[root][1]),pushup(root);}void opt3(int a,int b){int x=pre(a*2),y=las(a*2+1);splay(x,root),splay(y,ch[root][1]);update(ch[ch[root][1]][0],b);pushup(ch[root][1]),pushup(root);}}tree;int main(){//setIO("input");int n,x,m;scanf("%d",&n);for(int i=2;i<=n;++i)scanf("%d",&x),addedge(x,i);for(int i=1;i<=n;++i) scanf("%d",&w[i]);dfs(1);euler[1]=200100, euler[++cnt]=200101;tree.build(1,cnt,root,0);scanf("%d",&m);while(m--){char opt[10];int a,b;scanf("%s",opt);if(opt[0]=='Q'){scanf("%d",&a);tree.opt1(a);}if(opt[0]=='C'){scanf("%d%d",&a,&b);tree.opt2(a,b);}if(opt[0]=='F'){scanf("%d%d",&a,&b);tree.opt3(a,b);}}return 0; }

  

轉載于:https://www.cnblogs.com/guangheli/p/10011464.html

總結

以上是生活随笔為你收集整理的BZOJ 3786: 星系探索 欧拉游览树的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲第一色在线 | av毛片网| aaa人片在线 | 国产精品视频在线观看免费 | 99re在线精品视频 | 成人在线观看免费网站 | 精品美女在线 | 国产9区| 一区二区欧美视频 | 精品国产一区二区三区久久久 | 精品视频在线观看一区二区 | 国产成人精品免高潮费视频 | 国产日韩欧美激情 | 国产毛片高清 | 看片在线 | 麻豆射区 | 性欧美大战久久久久久久 | 男人网站在线观看 | 午夜爽爽视频 | 伊人青青 | 中文字幕一区二区三区免费 | 成人av播放 | 天天碰天天操 | 爱情岛论坛亚洲品质自拍 | 久久久无码精品亚洲国产 | 激情欧美亚洲 | 特黄一区 | 久久精品女人毛片国产 | 99久久精品国产一区二区三区 | 色妞色视频一区二区三区四区 | 午夜剧场福利 | 人妖交videohd另类 | 韩日av在线 | 小俊大肉大捧一进一出好爽 | www.蜜臀av.com| 亚洲国产精品自拍视频 | 国产精品成人午夜视频 | 中文字幕精品视频在线观看 | 毛片视频免费观看 | 靠逼网站在线观看 | 高清一区二区视频 | 韩国日本在线观看 | 女女同性女同一区二区三区按摩 | 足疗店女技师按摩毛片 | 国产二级视频 | 日韩人妻精品无码一区二区三区 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 中国新婚夫妻性猛交 | 免费的av网址 | 日韩插插插| 波多野结衣亚洲一区 | 好色av| 爱爱亚洲| 天天射天天搞 | 欧美36p| 国产精品电影一区二区 | 超碰在线观看免费 | www.亚洲精品 | 欧美精品久久96人妻无码 | 久久精品视频在线 | 超碰碰碰碰 | 婷婷在线看 | 色多多av | 成人av手机在线 | 欧美性猛交xxxⅹ富婆 | 成人av免费观看 | 亚洲精品国产视频 | jizz91| 欧日韩不卡在线视频 | 蜜桃综合 | 欧美大尺度做爰啪啪床戏明星 | av黄色在线免费观看 | 奇米777第四色 | 成人瑟瑟| 久久久久99精品成人片直播 | 一区二区国产在线观看 | 九九爱国产 | 一区二区三区视频观看 | 四虎音影 | 操碰av| 国产色啪| 成人午夜网 | 欧美 另类 交 | 中文字幕一区二区三区乱码人妻 | 国产成人无码aa精品一区 | 精品视频第一页 | 国产第七页 | 天天色天天草 | 天天色天天干天天色 | 一级片黄色片 | 国产在线一区二区视频 | 一级全黄男女免费大片 | 国产精品人人做人人爽人人添 | 亚洲AV乱码国产精品观看麻豆 | 在线观看中文字幕第一页 | 在线看片你懂 | 欧美男女交配视频 | 蜜桃久久久aaaa成人网一区 | 欧美视频一区在线观看 |