亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[BZOJ2333][SCOI2011][可并堆]棘手的操作

2019-11-11 04:14:39
字體:
來源:轉載
供稿:網友

題意


有N個節點,標號從1到N,這N個節點一開始相互不連通。第i個節點的初始權值為a[i],接下來有如下一些操作: U x y: 加一條邊,連接第x個節點和第y個節點 A1 x v: 將第x個節點的權值增加v A2 x v: 將第x個節點所在的連通塊的所有節點的權值都增加v A3 v: 將所有節點的權值都增加v F1 x: 輸出第x個節點當前的權值 F2 x: 輸出第x個節點所在的連通塊中,權值最大的節點的權值 F3: 輸出所有節點中,權值最大的節點的權值


每個點維護一個可并堆,U的操作就是合并x,y所處的堆;A1,A2堆上操作,A3開個全局變量記錄;F1,F2堆上操作,F3的話用優先隊列記錄每個堆頂元素大小就可以了(注意是每個堆頂元素,維護的可并堆是大根堆,所以這樣記錄正確性是可以保證的)。

不是第一次寫可并堆了,個人偏愛寫左偏樹(其他的不會啊2333),不過這是我用Emacs碼的第一個代碼,調了一個晚上和一個上午。

…還是很有紀念價值2333

#include <cstdio>#include <queue>#include <algorithm>#include <iostream>#define N 300010using namespace std;int n,m,tot,x,v,tp,i;int w[N],sta[N];char op[5];struct node{ int f,l,r,d,flg,w;}T[N<<1];PRiority_queue<int> Q,del;inline int Getr(int x){ while(T[x].f) x=T[x].f; return x;}inline void swap(int &x,int &y){ int z=x;x=y;y=z;}inline void Erase(int x){ while(del.size()&&del.top()==Q.top()) del.pop(),Q.pop(); del.push(x);}inline void Insert(int x){ while(del.size()&&del.top()==Q.top()) del.pop(),Q.pop(); Q.push(x);}inline int Top(){ while(del.size()&&del.top()==Q.top()) del.pop(),Q.pop(); return Q.top();}inline void mark(int x,int y){ T[x].w+=y; T[x].flg+=y;}inline void pushdown(int x){ if(T[x].flg==0) return; if(T[x].l) mark(T[x].l,T[x].flg); if(T[x].r) mark(T[x].r,T[x].flg); T[x].flg=0;}inline void fixtop(int x){ sta[tp=1]=x; for(int i=x;T[i].f;i=T[i].f)sta[++tp]=T[i].f; for(;tp;--tp)pushdown(sta[tp]);}int merge(int x,int y,int f){ if(x==0||y==0){T[x+y].f=f;return x+y;} pushdown(x); pushdown(y); if(T[x].w<T[y].w)swap(x,y); T[x].r=merge(T[x].r,y,x); if(T[T[x].l].d<T[T[x].r].d) swap(T[x].l,T[x].r); if(T[x].r)T[x].d=T[T[x].r].d+1; else T[x].d=0; T[x].f=f; return x;}inline int query(int x){ fixtop(x); return T[x].w;}inline int qmx(int x){ fixtop(x); return T[Getr(x)].w;}inline void Fix(int x){ fixtop(x); int R=Getr(x); if(R==x) { int k=merge(T[x].l,T[x].r,x); T[x].l=T[x].r=0; Insert(T[merge(x,k,0)].w); return; } if(x==T[T[x].f].l) T[T[x].f].l=merge(T[x].l,T[x].r,T[x].f); else T[T[x].f].r=merge(T[x].l,T[x].r,T[x].f); T[x].l=T[x].r=0; Insert(T[merge(x,R,0)].w);}inline int max(const int &a,const int &b){ return a<b?b:a;}inline void reaD(int &x){ char Ch=getchar();x=0;int f=1; for(;Ch>'9'||Ch<'0';Ch=getchar())if(Ch=='-')f=-1; for(;Ch>='0'&&Ch<='9';x=x*10+Ch-'0',Ch=getchar());x*=f;}inline void reaD(char *x){ char Ch=getchar();int len=0; for(;!((Ch>='A'&&Ch<='Z')||(Ch>='0'&&Ch<='9'));Ch=getchar()); for(;(Ch>='A'&&Ch<='Z')||(Ch>='0'&&Ch<='9');x[len++]=Ch,Ch=getchar());}int main(){ reaD(n); for(i=1;i<=n;i++) reaD(T[i].w),Q.push(T[i].w); reaD(m); for(i=1;i<=m;i++){ reaD(op); if(op[0]=='A'){ if(op[1]=='1'){ reaD(x);reaD(v); Erase(T[Getr(x)].w); T[x].w+=v; Fix(x); } else if(op[1]=='2'){ reaD(x),reaD(v); int k=Getr(x); Erase(T[k].w); Insert(T[k].w+v); mark(k,v); } else reaD(v),tot+=v; } else if(op[0]=='U'){ reaD(x);reaD(v); int a=Getr(x),b=Getr(v); if(a==b) continue; Erase(T[a].w);Erase(T[b].w); Insert(T[merge(a,b,0)].w); } else{ if(op[1]=='1') reaD(x),printf("%d/n",query(x)+tot); else if(op[1]=='2') reaD(x),printf("%d/n",tot+qmx(x)); else printf("%d/n",Top()+tot); } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区三区乱码aⅴ| 国产精品黄页免费高清在线观看| 日韩欧美亚洲一二三区| 国内精品久久久久伊人av| 亚洲欧美另类中文字幕| 在线观看欧美日韩国产| 亚洲精品720p| 色婷婷**av毛片一区| 亚洲天堂男人天堂女人天堂| 欧美精品videos性欧美| 国产一区欧美二区三区| 国产精品视频成人| 久久久97精品| 姬川优奈aav一区二区| 久久久亚洲影院你懂的| 久久夜色精品国产欧美乱| 日韩精品在线电影| 国产精品色视频| 久久国产精品影片| 国产精品18久久久久久首页狼| 韩国三级电影久久久久久| 午夜精品久久久久久久99热浪潮| 亚洲大胆美女视频| 国产精品白丝av嫩草影院| 欧美日韩精品在线| 中文字幕日韩免费视频| 亚洲在线一区二区| 欧美黄色性视频| 最近2019年好看中文字幕视频| 亚洲日本aⅴ片在线观看香蕉| 中文亚洲视频在线| 亚洲成人激情小说| 亚洲a在线观看| 日本欧美黄网站| 96sao精品视频在线观看| 午夜精品福利电影| 日韩在线资源网| 夜夜嗨av色一区二区不卡| 91久久国产综合久久91精品网站| 亚洲毛茸茸少妇高潮呻吟| 日韩国产在线看| 欧美性xxxxxx| 欧美精品生活片| 亲子乱一区二区三区电影| 亚洲视频电影图片偷拍一区| 中文字幕免费国产精品| 成人免费观看a| 日本久久久久久| 91嫩草在线视频| 91久久精品国产| 日韩免费在线视频| 亚洲色图欧美制服丝袜另类第一页| 日韩欧美国产免费播放| 中国日韩欧美久久久久久久久| 亚洲综合大片69999| 欧美成人中文字幕在线| 91精品国产91久久久久久| 亚洲人精品午夜在线观看| 欧美日韩免费在线观看| 亚洲欧洲国产伦综合| 粉嫩av一区二区三区免费野| 日韩极品精品视频免费观看| 精品久久久久久久久中文字幕| 久久激情视频免费观看| 亚洲男人天堂手机在线| 亚洲第一精品自拍| 久久免费成人精品视频| 欧美最近摘花xxxx摘花| 国产精品久久久久免费a∨| 91香蕉嫩草影院入口| 亚洲午夜未删减在线观看| 精品一区电影国产| 亚洲国产精品久久精品怡红院| 日韩欧美aaa| 国产精品无av码在线观看| 亚洲欧美日韩图片| 亚洲自拍欧美色图| 国产精品99久久久久久久久| 色噜噜狠狠色综合网图区| 4k岛国日韩精品**专区| 91av在线视频观看| 人妖精品videosex性欧美| 欧美成人一区二区三区电影| 久久亚洲国产精品成人av秋霞| 在线视频日本亚洲性| 久久91精品国产| 97精品一区二区三区| 国产精品极品美女粉嫩高清在线| 精品香蕉一区二区三区| 欧美日韩国产第一页| 欧美理论片在线观看| 国产成人精品日本亚洲| 久久久久久中文字幕| 中文字幕亚洲自拍| 久久国产精品99国产精| 538国产精品一区二区在线| 国产精品美女免费视频| 亚洲肉体裸体xxxx137| 成人免费观看a| 日韩在线观看免费| 亚洲第一网站免费视频| 国产999精品| 日韩精品免费在线播放| 成人精品一区二区三区电影黑人| 日韩中文av在线| 欧美另类第一页| 欧美www视频在线观看| 国产精品成人aaaaa网站| 97成人精品区在线播放| 久久久久久午夜| 欧美午夜精品久久久久久浪潮| 国产不卡av在线| 深夜福利91大全| 日韩高清av一区二区三区| 成人在线小视频| 91久久国产婷婷一区二区| 国产三级精品网站| 日韩禁在线播放| 国产有码在线一区二区视频| 国产成人jvid在线播放| 精品久久久久久亚洲国产300| 日韩理论片久久| 日韩欧美在线视频日韩欧美在线视频| 亚洲国产欧美日韩精品| 亚洲欧美制服综合另类| 日本一欧美一欧美一亚洲视频| 成人淫片在线看| 亚洲国产精品字幕| 欧美激情小视频| 欧美激情视频在线观看| 欧美高清videos高潮hd| 国产一区二区在线免费视频| 国产在线视频欧美| 久久久久中文字幕2018| 亚洲a在线观看| 久久久久久久久久久国产| 秋霞成人午夜鲁丝一区二区三区| 日本伊人精品一区二区三区介绍| 国产精品mp4| 国产精品亚洲综合天堂夜夜| 亚洲精品日韩丝袜精品| 国产精品美女av| 欧美性videos高清精品| 日韩不卡在线观看| 91欧美视频网站| 欧美高清无遮挡| 一个人看的www久久| 国产男女猛烈无遮挡91| 久久精品国产96久久久香蕉| 精品久久久久久久久久久久| 全球成人中文在线| 欧美精品午夜视频| 国产美女精品视频免费观看| 日韩女在线观看| 欧美激情一级欧美精品| 久久99精品久久久久久噜噜| 欧美成人全部免费| 96精品视频在线| 欧美激情区在线播放| 久久久99久久精品女同性| 国产精品情侣自拍| 亚洲一区二区久久久久久久| 成人自拍性视频| 国产成人97精品免费看片|