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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

bzoj 2870 最长道路tree——边分治

發布時間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj 2870 最长道路tree——边分治 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:https://www.lydsy.com/JudgeOnline/problem.php?id=2870

關于邊分治:https://www.cnblogs.com/Khada-Jhin/p/10154994.html

自己寫了那種把一個孩子連向自己,其他孩子連新建節點的重構圖方法。

如果 vector 里最后一個元素恰好是父親的話,末尾就會有一個新建節點只有一個孩子。

solve( ) 完之后要繼續 get_rt( ) ,想知道兩邊的點數 ts ;可以發現 to[ cr ] 的部分點數恰好是 siz[ to[ cr ] ] ,另一部分就是 s - siz[ to[ cr ] ] 了。

要遞歸的時候,如果 ts == 1 ,就不遞歸了。

關于這道題:https://www.cnblogs.com/Miracevin/p/10430192.html

虛點的點權就是它建出它的那個實點的點權;路徑上的點數等于路徑上的實邊條數 + 1 。

找出兩邊的路徑,分別 sort 然后雙指針即可。

#include<cstdio> #include<cstring> #include<algorithm> #include<vector> #define pb push_back #define ll long long using namespace std; int rdn() {int ret=0;bool fx=1;char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-')fx=0;ch=getchar();}while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();return fx?ret:-ret; } ll Mx(ll a,ll b){return a>b?a:b;} ll Mn(ll a,ll b){return a<b?a:b;} const int N=5e4+5,M=N<<1,INF=7e4; int n,vl[M],hd[M],xnt=1,to[M<<1],nxt[M<<1],w[M<<1];//xnt=1 int siz[M],mn,Rt,tot[2]; bool vis[M]; ll ans; vector<int> vt[N]; struct Node{int dis,mn;Node(int d=0,int m=0):dis(d),mn(m) {}bool operator< (const Node &b)const{return mn<b.mn;} }a[2][M]; void add(int x,int y,int z) {to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;w[xnt]=z;to[++xnt]=x;nxt[xnt]=hd[y];hd[y]=xnt;w[xnt]=z; } void Rbuild(int cr,int fa) {for(int i=0,lm=vt[cr].size()-1,v,lst=0;i<=lm;i++){if((v=vt[cr][i])==fa)continue;if(!lst) add(cr,v,1), lst=cr;else if(i==lm) add(lst,v,1);else {n++; vl[n]=vl[cr];add(lst,n,0); add(n,v,1); lst=n;}}for(int i=0,lm=vt[cr].size(),v;i<lm;i++)if((v=vt[cr][i])!=fa)Rbuild(v,cr); } void get_rt(int cr,int fa,int s) {siz[cr]=1;for(int i=hd[cr],v,d;i;i=nxt[i])if(!vis[i>>1]&&(v=to[i])!=fa){get_rt(v,cr,s); siz[cr]+=siz[v];d=Mx(siz[v],s-siz[v]);if(d<mn)mn=d, Rt=i;} } void dfs(int cr,int fa,int lj,int mn,bool fx) {mn=Mn(mn,vl[cr]); a[fx][++tot[fx]]=Node(lj,mn);for(int i=hd[cr],v;i;i=nxt[i])if(!vis[i>>1]&&(v=to[i])!=fa)dfs(v,cr,lj+w[i],mn,fx); } void cz() {for(int i=0;i<=1;i++)sort(a[i]+1,a[i]+tot[i]+1);int p0=tot[1]+1, lj=0, tw=w[Rt]+1;//+1for(int i=tot[0];i;i--){int tmn=a[0][i].mn;while(p0>1&&a[1][p0-1].mn>=tmn)p0--, lj=Mx(lj,a[1][p0].dis);if(p0>tot[1])continue;// ans=Mx(ans,(ll)tmn*(lj+a[0][i].dis+tw));}p0=tot[0]+1; lj=0;for(int i=tot[1];i;i--){int tmn=a[1][i].mn;while(p0>1&&a[0][p0-1].mn>=tmn)p0--, lj=Mx(lj,a[0][p0].dis);if(p0>tot[0])continue;// ans=Mx(ans,(ll)tmn*(lj+a[1][i].dis+tw));} } void solve(int cr,int s) {vis[cr>>1]=1;tot[0]=tot[1]=0;dfs(to[cr],0,0,INF,0); dfs(to[cr^1],0,0,INF,1);cz();int v=to[cr], ts=siz[v];if(ts>1){mn=N; get_rt(v,0,ts); solve(Rt,ts);}ts=s-ts; v=to[cr^1];// s-ts not s-siz[v] for siz[v] may changed!!!if(ts>1){mn=N; get_rt(v,0,ts); solve(Rt,ts);} } int main() {n=rdn();for(int i=1;i<=n;i++)vl[i]=rdn();for(int i=1,u,v;i<n;i++){u=rdn();v=rdn(); vt[u].pb(v); vt[v].pb(u);}Rbuild(1,0);mn=N;get_rt(1,0,n);solve(Rt,n);printf("%lld\n",ans);return 0; }

?

轉載于:https://www.cnblogs.com/Narh/p/10457963.html

總結

以上是生活随笔為你收集整理的bzoj 2870 最长道路tree——边分治的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 男人在线视频 | 综合网激情 | 欧美一区在线看 | 欧美日韩国产成人精品 | 男女曰逼视频 | 91精品国产高清一区二区三密臀 | 亚洲无码一区二区三区 | 黄色avv| 黄色工厂这里只有精品 | 日韩欧美国产一区二区在线观看 | 性久久久久久久久 | 伊人av一区 | 久久综合资源 | 女人的黄色片 | 一级aaa毛片| 五月婷婷爱 | 亚洲av男人的天堂在线观看 | 国产又爽又黄无码无遮挡在线观看 | 欧美一区二区三区啪啪 | www.夜夜爱 | 欧美激情四区 | 四虎福利视频 | av久色 | 抱着老师的嫩臀猛然挺进视频 | 亚洲午夜久久久久久久久久久 | 性高潮久久久久 | 亚洲影音 | 波波野结衣 | 一区二区三区四区在线观看视频 | 欧美一区在线视频 | 国产综合久久久久 | 一级黄网站 | 天海翼一区二区三区 | 欧美成人区 | 欧美大片在线观看 | 日韩精品一区在线播放 | 欧美z○zo重口另类黄 | 日日射av | www.youjizz日本 | 日韩成人免费观看 | 黄色一级片免费播放 | 亚洲性生活网站 | 在线观看亚洲色图 | 在线视频欧美一区 | 日本一级大毛片a一 | 日p视频在线观看 | 天天干狠狠爱 | 日本免费高清 | 亚洲国产成人av | 天天操天天操天天操天天操天天操 | 成人刺激视频 | 日本爱爱网址 | 他趴在我两腿中间添得好爽在线看 | 国产精品a级 | 国产网址| 免费看黄色片视频 | 精品123区| 欧美精品一二三四区 | 7799精品视频 | 四虎三级 | 欧美精品成人在线 | 99久久精品免费看国产交换 | 日本久久99| 国产精品久久久免费 | 另类综合视频 | 天天看片中文字幕 | 久久尤物视频 | 国产aⅴ激情无码久久久无码 | 欧美性欧美zzzzzzzzz | 蜜桃视频中文字幕 | 一个人看的www日本高清视频 | 1000部国产精品成人观看 | 狠狠一区二区 | 丰满大爆乳波霸奶 | av日韩一区 | 欧美三区在线 | 日日夜夜操视频 | 一级一片免费看 | 国产麻豆免费观看 | 日本三级免费网站 | 国产91免费在线观看 | 真人真事免费毛片 | 奇米影视播放器 | 久久人 | 91亚洲欧美激情 | 精品三区视频 | 一级一片免费看 | 欧美日韩激情一区二区 | 中国新婚夫妻性猛交 | www久久久 | 国产一二三区在线视频 | 777四色| 日韩激情片 | 国产日韩欧美一区二区东京热 | 国产探花在线观看 | 免费看黄色片子 | 天天舔天天射 | 91免费黄| 中文字幕日本在线 |