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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[ZJOI2007]时态同步 树形DP

發布時間:2025/3/11 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [ZJOI2007]时态同步 树形DP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:給定一棵N個節點的無根樹,每條邊都有一個權值V,選取其中一個點作為關鍵點,你可以任意增加某條邊的權值,求使得從關鍵點出發,到任意一個葉子節點的距離都相同所需要增加的權值和。

?

數據范圍:

對于40%的數據,N ≤ 1000

對于100%的數據,N ≤ 500000,V?≤ 1000000

?-------------------------------------分割線------------------------------------

題解:一道比較顯然的樹形DP,不難想到我們把其他的鏈都向最長鏈看齊。

掃描一遍樹,自底向上處理出當前節點的出邊數量num,以及當前節點到葉節點的距離和sum。

算出最遠的距離激發器的葉子節點距離maxn[x],然后對于其他葉子節點,所需要增加的長度顯然即為 maxn[x] * num - sum。

累加答案即可。

#include<bits/stdc++.h>#define ll long long #define mp make_pair #define rep(i, a, b) for(int i = (a); i <= (b); i++) #define per(i, a, b) for(int i = (a); i >= (b); i--)using namespace std;typedef pair<int, int> pii; typedef double db; const int N = 1e6 + 50; int n, a[N], root; int head[N], cnt = 0; ll maxn[N], f[N]; struct node{ ll to, next, v; } e[N]; inline int read(){int x = 0, f = 1;char ch = getchar();while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar();}while(ch >='0' && ch <='9') { x = (x<<3)+(x<<1)+(ch^48); ch = getchar();}return x*f; } void add(int x, int y, int z){e[++cnt].to = y; e[cnt].v = z;e[cnt].next = head[x]; head[x] = cnt; } void init(){n = read(); root = read();rep(i, 1, n-1) {int xx, yy, zz;xx = read(); yy = read(); zz = read();add(xx, yy, zz);add(yy, xx, zz);} } void dfs(int x, int fa){f[x] = 0, maxn[x] = 0;ll sum = 0, num = 0;for(int i = head[x]; i; i = e[i].next){int y = e[i].to;if(y == fa) continue;dfs(y, x); num ++;f[x] += f[y];maxn[x] = max(maxn[y] + e[i].v, maxn[x]);sum += (ll)maxn[y] + e[i].v; }f[x] += (ll)maxn[x] * num - sum; } void work(){dfs(root, 0);printf("%lld\n", f[root]); } int main(){init();work();return 0; } View Code

?

轉載于:https://www.cnblogs.com/smilke/p/11576955.html

總結

以上是生活随笔為你收集整理的[ZJOI2007]时态同步 树形DP的全部內容,希望文章能夠幫你解決所遇到的問題。

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