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

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

【b704 && BZOJ 1999】樹網的核

2019-11-10 20:23:46
字體:
來源:轉載
供稿:網友

【題目鏈接】:http://noi.qz5z.com/viewtask.asp?id=b704 &&http://www.lydsy.com/JudgeOnline/PRoblem.php?id=1999

【題意】 給你一棵樹; 讓你找出所有的直徑; 并在這些直徑上面選取連續的一段; 使得它的偏心距最小;

【題解】 這題有個思維量比較大的點就是; 多條直徑,只要選取任意一條就好; 網上找到了很多分析; 感覺這個說得比較清楚吧;

/*證明:首先,如圖,如果ABCD和FBCE都是直徑的話,則AB=FB,CD=CE(如果不然,可設AB>FB,則FBCE<ABCE,矛盾!)。這樣,ABCE,FBCD也都是直徑。我們給BC起個名字叫“公共段”。由連通性和路徑的不唯一性,公共段必然存在??紤]ecc的定義,路徑的ecc是指所有的點到路徑的距離的最大值。核指的是直徑上長度滿足約束的ECC最小的子路經。假如根據直徑ABCE算得的core是GHBI,路徑GHBI的ecc就是max{BF,AG,DI, EI},這個最大值取到了最小。由于DC=EC,也就是說,如果路徑和公共段有交集,公共段的一端上,不包含CORE的直徑是可以任選的。換言之,如果max{BF,AG,DI, EI}取到了最小值,必有 max{BF,AG,ID}=max{BF,AG,DI, EI},此時用AB替換BF,則BF=AB>AG,ecc=max{BF,ID}。也就是說,如果路徑和公共段有交集,實際計算max時,只需要計算路徑在公共段上的部分的ecc,然后和公共段兩端的路徑長取一遍MAX就行了。下面證明,使得ecc取到最小的core必然和公共段有交集。設沒有交集,則必然有一條直徑和這個core沒有交集,此core的ecc就至少嚴格大于公共段長度+除去公共段的半條路徑長度,然而,公共段上的點到其他點的最長距離,最大不會大于這個長度,這與ecc最小矛盾!通過上面的論述,得出core只與公共段有關,也就是說引理成立。所以在計算時任選一條直徑即可,}*/

知道上面這個結論之后,瞬間壓力就小了很多了; 再貪心一下; 可以想見,肯定是這段路徑的長度越長越好; (如果不是最長的,那么就會有一段多出來,所以感覺上是盡可能地長) 所以每次枚舉這段路徑的起點,終點的話可以根據s來確定,越長越好; 當然在枚舉之前,先找出任意一條直徑;然后把直徑上的點標記一下; 然后從直徑上的點開始進行dfs;在不經過直徑的情況下,看看這個點最遠能走多遠;則這個長度就是這個點的偏心距了; (整條直徑的偏心距就是這個直徑上的所有的點的偏心距的最大值->直徑的偏心距的等價含義); 這個可以預處理出來;->設為mmax[n] 然后回到枚舉那段 枚舉了起點s,和終點t; 然后直徑的左端點為l,右端點為r; 則這段路徑s..t的偏心距為max(dis[l]-dis[s],dis[r]-dis[t],mmax[s..t]中的最大值); (dis[x]是這段路徑上的點x到直徑的左端點l的距離); 因為在求mmax的時候沒有考慮直徑上的點,所以會漏掉這種情況.就是直徑的左端點和右端點離這個核最遠的情況. 這里s..t可以像窗口一樣往右移動; (保持前一次的右端點t不動,左端點右移,然后根據新的左端點調整右端點); 可以想到用單調隊列來優化; 這里dis[l]-dis[s],dis[r]-dis[t]都是定值了,所以不用管; 直接維護mmax單調遞減就好; (求直徑的話,隨便從一個點開始dfs,找離他最遠的點u1,然后從u1再重復上述過程,找到u2,則u1-u2就是一條直徑); 【完整代碼】

#include <bits/stdc++.h>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define LL long long#define rep1(i,a,b) for (int i = a;i <= b;i++)#define rep2(i,a,b) for (int i = a;i >= b;i--)#define mp make_pair#define pb push_back#define fi first#define se second#define rei(x) scanf("%d",&x)#define rel(x) scanf("%I64d",&x)typedef pair<int,int> pii;typedef pair<LL,LL> pll;const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};const double pi = acos(-1.0);const int MAXN = 5e5+100;struct abc{ int nex,en,w;};int dis[MAXN],n,s,tot,fir[MAXN],path[MAXN],len,lmax[MAXN],rmax[MAXN],mmax[MAXN];int dl[MAXN],l,r;bool bo[MAXN];abc bian[MAXN*2];void add(int x,int y,int z){ bian[++tot].nex = fir[x]; fir[x] = tot; bian[tot].en = y,bian[tot].w = z;}void dfs(int x,int fa,int arr[]){ for (int i = fir[x];i;i=bian[i].nex) { int y = bian[i].en; if (y==fa) continue; arr[y] = arr[x] + bian[i].w; dfs(y,x,arr); }}bool get_path(int x,int aim,int fa){ if (x==aim) { path[++len] = x; return true; } for (int i = fir[x];i;i=bian[i].nex) { int y = bian[i].en; if (y==fa) continue; if (get_path(y,aim,x)) { path[++len] = x; return true; } } return false;}int gainecc(int x,int fa){ int ret = 0; for (int i = fir[x];i;i = bian[i].nex) { int y = bian[i].en; if (bo[y] || y==fa) continue; ret = max(gainecc(y,x)+bian[i].w,ret); } return ret;}int main(){ //freopen("F://rush.txt","r",stdin); rei(n);rei(s); rep1(i,1,n-1) { int x,y,z; rei(x);rei(y);rei(z); add(x,y,z),add(y,x,z); } int q,w; dis[1] = 0; dfs(1,0,dis); q = 1; rep1(i,2,n) if (dis[i]>dis[q]) q = i; dis[q] = 0; dfs(q,0,dis); w = 1; rep1(i,2,n) if (dis[i]>dis[w]) w = i; get_path(w,q,0); rep1(i,1,len) { lmax[i] = dis[path[i]]-dis[q]; rmax[i] = dis[w]-dis[path[i]]; } rep1(i,1,len) bo[path[i]] = true; rep1(i,1,len) mmax[path[i]] = gainecc(path[i],0); l = 1,r = 0; int j = 0,ans = -1; rep1(i,1,len) { while (j+1<=len && dis[path[j+1]]-dis[path[i]]<=s) { j++; while (r>=l && mmax[path[j]]>=mmax[path[dl[r]]]) r--; dl[++r] = j; } while (dl[l] < i) l++; int cal = max(mmax[path[dl[l]]],max(lmax[i],rmax[j])); if (ans == -1 || cal < ans) ans = cal; } printf("%d/n",ans); return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女在线观看| 日韩免费在线观看视频| 国产成人精品免高潮在线观看| 国产91精品久久久久久久| 91精品国产高清自在线看超| 国产精品美女午夜av| 欧美激情精品在线| 91精品国产91久久久久久最新| www.色综合| 91国产精品91| 欧美日韩一区二区三区在线免费观看| 国产一区二区色| 国产成人精品日本亚洲| 国内免费久久久久久久久久久| 欧美精品videosex性欧美| 久久成人这里只有精品| 久久香蕉国产线看观看网| 欧美尺度大的性做爰视频| 亚洲变态欧美另类捆绑| 国产精品女主播| 中文字幕av一区二区| 97久久久久久| 777午夜精品福利在线观看| 日韩欧美黄色动漫| 欧美中文在线免费| 中文精品99久久国产香蕉| 国产精品91久久久| 欧美日产国产成人免费图片| 亚洲最新中文字幕| 亚洲色图激情小说| 欧美激情网站在线观看| 神马久久久久久| 97福利一区二区| 国产成人高清激情视频在线观看| 国产欧美婷婷中文| 国产精品久久999| 国产视频精品自拍| 国产一区玩具在线观看| 92看片淫黄大片欧美看国产片| 两个人的视频www国产精品| 亚洲大尺度美女在线| 精品久久久一区| 亚洲成avwww人| 亚洲激情视频在线播放| 亚洲欧美日韩直播| 国产精品久久久久999| 欧美高清自拍一区| 午夜精品免费视频| 正在播放欧美视频| 51色欧美片视频在线观看| 国产精品久久国产精品99gif| 成人激情在线播放| 在线视频日韩精品| 欧美亚洲一级片| 欧美做受高潮电影o| 国产精品人成电影在线观看| 欧美日韩一区二区在线| 中文字幕日韩专区| 亚洲国模精品私拍| 国产美女久久精品| 久久九九免费视频| 91成人国产在线观看| 国产精品高潮呻吟久久av黑人| 久久久精品一区二区三区| 亚洲欧美视频在线| 韩国19禁主播vip福利视频| 亚洲精品美女在线观看播放| 欧美午夜www高清视频| 欧美黑人性视频| 欧美最猛性xxxxx(亚洲精品)| 精品久久久久久中文字幕| 欧美性jizz18性欧美| 91久久精品久久国产性色也91| 亚洲精品日韩丝袜精品| 国产精自产拍久久久久久蜜| 亚洲国产成人久久| 激情亚洲一区二区三区四区| 亚洲va欧美va国产综合久久| 国内外成人免费激情在线视频网站| 国产ts人妖一区二区三区| 亚洲精品成人免费| 成人福利在线视频| 欧美激情视频一区二区| www.欧美免费| 国产精品海角社区在线观看| 亚洲电影免费观看高清完整版在线观看| 亚洲成人久久网| 亚洲午夜国产成人av电影男同| 欧美大尺度在线观看| 国产一区欧美二区三区| 亚洲天堂av高清| 久久久亚洲福利精品午夜| 国产精品视频在线播放| 日韩欧美在线网址| 国产精品444| 亚洲日韩中文字幕在线播放| 日本精品视频在线| 综合国产在线观看| 国产女人18毛片水18精品| 成人国产亚洲精品a区天堂华泰| 91麻豆桃色免费看| 久久艹在线视频| 国产精品国产三级国产aⅴ9色| 国产精品欧美激情在线播放| 亚洲成人av片在线观看| 欧美视频不卡中文| 81精品国产乱码久久久久久| 日韩欧美精品中文字幕| 91精品国产高清久久久久久| 中文字幕在线视频日韩| 国产美女被下药99| 国产精品福利片| 亚洲一区二区少妇| 国产一区二区三区高清在线观看| 午夜欧美大片免费观看| 国产一区二区在线免费| 日韩精品视频免费| 日本久久久久亚洲中字幕| 日韩精品视频观看| 国产精品亚洲欧美导航| 国产婷婷成人久久av免费高清| 国产精品美女久久久久久免费| 亚洲福利视频网站| 日韩的一区二区| 日韩av一卡二卡| 亚洲国产97在线精品一区| 亚洲成人久久久| 亚洲欧美在线免费| 国产精品亚洲аv天堂网| 一本色道久久综合狠狠躁篇怎么玩| 国产一区二区久久精品| 欧美高清在线视频观看不卡| 久久久久久高潮国产精品视| 成人免费福利视频| 欧美夫妻性生活视频| 欧美亚洲视频在线观看| 日本欧美精品在线| 欧美亚洲在线播放| 高清欧美一区二区三区| 日韩av网站电影| 免费97视频在线精品国自产拍| 亚洲欧美综合区自拍另类| 亚洲爱爱爱爱爱| 欧美午夜视频一区二区| 国产精品成av人在线视午夜片| 一本色道久久88亚洲综合88| 91精品视频在线免费观看| 欧美精品中文字幕一区| 91久久综合亚洲鲁鲁五月天| 精品国产福利视频| 国产日韩欧美日韩大片| 国内精品美女av在线播放| 国产精品久久综合av爱欲tv| 国产精品久久久av久久久| 精品国产一区二区三区久久久| 日本久久久久亚洲中字幕| 狠狠做深爱婷婷久久综合一区| 国产精品69精品一区二区三区| 欧美日韩在线免费| 性色av一区二区三区红粉影视| 日韩欧美在线播放| 国产午夜精品久久久| 欧美日韩中文在线| 欧美日韩成人精品|