日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

[Usaco2010 Mar]gather 奶牛大集会

發(fā)布時(shí)間:2023/12/13 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Usaco2010 Mar]gather 奶牛大集会 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1827: [Usaco2010 Mar]gather 奶牛大集會(huì)

Time Limit: 1 Sec??Memory Limit: 64 MB Submit: 1129??Solved: 525 [Submit][Status][Discuss]

Description

Bessie正在計(jì)劃一年一度的奶牛大集會(huì),來(lái)自全國(guó)各地的奶牛將來(lái)參加這一次集會(huì)。當(dāng)然,她會(huì)選擇最方便的地點(diǎn)來(lái)舉辦這次集會(huì)。每個(gè)奶牛居住在 N(1<=N<=100,000) 個(gè)農(nóng)場(chǎng)中的一個(gè),這些農(nóng)場(chǎng)由N-1條道路連接,并且從任意一個(gè)農(nóng)場(chǎng)都能夠到達(dá)另外一個(gè)農(nóng)場(chǎng)。道路i連接農(nóng)場(chǎng)A_i和B_i(1 <= A_i <=N; 1 <= B_i <= N),長(zhǎng)度為L(zhǎng)_i(1 <= L_i <= 1,000)。集會(huì)可以在N個(gè)農(nóng)場(chǎng)中的任意一個(gè)舉行。另外,每個(gè)牛棚中居住者C_i(0 <= C_i <= 1,000)只奶牛。在選擇集會(huì)的地點(diǎn)的時(shí)候,Bessie希望最大化方便的程度(也就是最小化不方便程度)。比如選擇第X個(gè)農(nóng)場(chǎng)作為集會(huì)地點(diǎn),它的不方便程度是其它牛棚中每只奶牛去參加集會(huì)所走的路程之和,(比如,農(nóng)場(chǎng)i到達(dá)農(nóng)場(chǎng)X的距離是20,那么總路程就是C_i*20)。幫助Bessie找出最方便的地點(diǎn)來(lái)舉行大集會(huì)。 考慮一個(gè)由五個(gè)農(nóng)場(chǎng)組成的國(guó)家,分別由長(zhǎng)度各異的道路連接起來(lái)。在所有農(nóng)場(chǎng)中,3號(hào)和4號(hào)沒有奶牛居住。

Input

第一行:一個(gè)整數(shù)N * 第二到N+1行:第i+1行有一個(gè)整數(shù)C_i * 第N+2行到2*N行,第i+N+1行為3個(gè)整數(shù):A_i,B_i和L_i。

Output

* 第一行:一個(gè)值,表示最小的不方便值。

Sample Input

5
1
1
0
0
2
1 3 1
2 3 2
3 4 3
4 5 3

Sample Output

15
先把子樹上所有點(diǎn)移動(dòng)到根的值計(jì)算出來(lái),把移動(dòng)到1的值設(shè)為初始答案,發(fā)現(xiàn)如果一個(gè)孩子如果更優(yōu),那么一定滿足$2*siz>tot$,顯然只可能有一個(gè)孩子滿足,那就貪心地移動(dòng)即可 #include <cstdio> char buf[10000000], *ptr = buf - 1; inline int readint(){int n = 0;char ch = *++ptr;while(ch < '0' || ch > '9') ch = *++ptr;while(ch <= '9' && ch >= '0'){n = (n << 1) + (n << 3) + ch - '0';ch = *++ptr;}return n; } typedef long long ll; const int maxn = 100000 + 10; struct Edge{int to, val, next;Edge(){}Edge(int _t, int _v, int _n): to(_t), val(_v), next(_n){} }e[maxn * 2]; int fir[maxn] = {0}, cnt = 0; inline void ins(int u, int v, int w){e[++cnt] = Edge(v, w, fir[u]); fir[u] = cnt;e[++cnt] = Edge(u, w, fir[v]); fir[v] = cnt; } int c[maxn]; ll f[maxn], siz[maxn], ans; void dfs1(int u, int fa){f[u] = 0;siz[u] = c[u];for(int v, i = fir[u]; i; i = e[i].next){v = e[i].to;if(v == fa) continue;dfs1(v, u);f[u] += f[v] + siz[v] * e[i].val;siz[u] += siz[v];} } void dfs2(int u, int fa){for(int v, i = fir[u]; i; i = e[i].next){v = e[i].to;if(v == fa) continue;if(siz[1] - 2 * siz[v] < 0){ans += (siz[1] - 2 * siz[v]) * e[i].val;dfs2(v, u);}} } int main(){fread(buf, sizeof(char), sizeof(buf), stdin);int N = readint();for(int i = 1; i <= N; i++) c[i] = readint();for(int u, v, w, i = 1; i < N; i++){u = readint();v = readint();w = readint();ins(u, v, w);}dfs1(1, 0);ans = f[1];dfs2(1, 0);printf("%lld\n", ans);return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/ruoruoruo/p/7512378.html

總結(jié)

以上是生活随笔為你收集整理的[Usaco2010 Mar]gather 奶牛大集会的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。