洛谷1351 聯合權值 樹形動態規劃

2021-09-12 17:14:44 字數 1156 閱讀 2458

顯然是一顆樹。

對於x節點,答案只有兩種情況。

一是「x的父親和x的兒子」,這個可以直接在dfs的時候多維護一祖父的資訊即可。

二是「x的兒子們」。

第一問:顯然是前兩大的數。

第二問:ans

=sum

∗sum

−t+w

[x]∗

w[fa

fa]∗

2(無向

圖)t=

∑i=1

nw[i

]∗w[

i]

ans=sum*sum-t+w[x]*w[fafa]*2(無向圖) \\ t=\sum_^ w[i]*w[i]

ans=su

m∗su

m−t+

w[x]

∗w[f

afa]

∗2(無

向圖)t

=i=1

∑n​w

[i]∗

w[i]

#include

#include

#define rep(i,x,y) for (register int i=x;i<=y;i++)

using

namespace std;

const

int mod=

10007

;struct nodea[

400005];

int n,w[

200001

],ans1,ans2,tot,head[

200001];

void

add(

int x,

int y)

;head[x]

=tot;

}void

dfs(

int d,

int f,

int ff)

} ans1=

max(ans1,

max(q*e,w[d]

*w[ff]))

; ans2=

(ans2+

(b*b%mod-c+mod)

%mod+w[d]

*w[ff]*2

%mod)

%mod;

}int

main()

洛谷 1351 聯合權值

一棵樹上距離為2的兩個節點的權值相乘,問max和sum70分 列舉每個節點,它的兩個兒子必定距離為2,相加 取max即可 會t 100分 注意到,乙個節點的兒子中,互相都要乘 根據乘法分配律,我先預處理它兒子的權值和,每個節點x對聯合權值的貢獻為key x sum key x 這樣可以把o n3 的...

洛谷 1351 聯合權值

題目描述 無向連通圖 g 有 n 個點,n 1 條邊。點從 1 到 n 依次編號,編號為 iii 的點的權值為 wi,每條邊的長度均為 1。圖上兩點 u,v 的距離定義為 u 點到 v 點的最短距離。對於圖 g 上的點對 u,v 若它們的距離為 2,則它們之間會產生wv wu 的聯合權值。請問圖 g...

洛谷 1351 聯合權值

無向連通圖 gg 有 nn 個點,n 1n 1 條邊。點從 11 到 nn 依次編號,編號為 ii 的點的權值為 w iwi 每條邊的長度均為 11。圖上兩點 u,v u,v 的距離定義為 uu 點到 vv 點的最短距離。對於圖 gg 上的點對 u,v u,v 若它們的距離為 22,則它們之間會產生...