P3914 染色計數 樹形dp

2021-09-23 15:31:38 字數 970 閱讀 1231

n

nn個點每個點有些可以染的顏色,要求相鄰顏色不相同,方案總數。

樹形d pdp

dp,定義fx,

if_

fx,i

​表示點x

xx的染顏色i

ii的方案數。然後定義zx=

∑i=1

mfxi

z_x=\sum_^mf_

zx​=∑i

=1m​

fxi​

​然後顯然動態轉移方程fx,

i=zy

−fy,

i(x−

>y)

f_=z_y-f_(x->y)

fx,i​=

zy​−

fy,i

​(x−

>y)

#include

#include

#include

using

namespace std;

const

int xjq=

1e9+

7,n=

5001

;int tot,n,m,f[n]

[n],z[n]

,ls[n]

;struct nodea[

2*n]

;void

addl

(int x,

int y)

voiddp(

int x,

int fa)

for(

int j=

1;j<=m;j++

)(z[x]

+=f[x]

[j])

%=xjq;

}int

main()

for(

int i=

1;i(1,0

);printf

("%d"

,z[1])

;}

(noip 模擬 染色)《樹形DP

染色 題目描述 有一棵點數為 n 的樹,樹邊有邊權。將 m 個點染成黑色,並將其他的點染 成白色。會獲得黑點兩兩之間的距離和加上白點兩兩之間的距離和的收益。問 收益最大值是多少。輸入格式 第一行兩個整數 n m。接下來 n 1 行,每行三個整數 a b c,表示有一 條樹邊連線 a b,長度為 c。...

玩具 奇妙樹形dp 計數

求 nn 個結點的隨機生成森林的 期望最高樹高 設 f i,j,k f i,j,k 表示高度為 i i,使用 j j 個球,k k 個球在頂部的概率,f i,j,k f i,j 1,k j 3j 1 f i j 1 k 1 1j 1 f i 1 j 1 p 1j 1 f i,j,k f i j 1 ...

HAOI2015 樹上染色(樹形dp)

有一棵點數為 n 的樹,樹邊有邊權。給你乙個在 0 n 之內的正整數 k 你要在這棵樹中選擇 k個點,將其染成黑色,並將其他 的n k個點染成白色 將所有點染色後,你會獲得黑點兩兩之間的距離加上白點兩兩之間的距離的和的受益。問受益最大值是多少。輸入格式 第一行包含兩個整數 n,k 接下來 n 1 行...