牛客練習賽 1 B 樹

2021-10-08 14:56:47 字數 1299 閱讀 7344

有一顆樹,有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對 (x,

y)

(x,y)

(x,y),x

xx 到 y

yy 的路徑上的所有點的顏色都要與 x

xx 和 y

yy 相同,請統計方案數

易得乙個節點要麼塗和父節點乙個顏色,要麼塗沒有出現過的顏色

假設我們遍歷到了第 x

xx 個點已經用了 y

yy 個顏色了

如果要塗和父節點乙個顏色,那麼方案數就是前 x−1

x-1x−

1 個點用了 y

yy 個顏色的方案數

如果要塗和父節點不同顏色,那麼方案數就是前 x−1

x-1x−

1 個點用了 y−1

y-1y−

1 個顏色的方案數 ∗(k

−(y−

1)

)*(k-(y-1))

∗(k−(y

−1))

我們發現方案數跟樹長什麼樣並沒有關係,我們完全可以轉化為乙個線性結構求解

設 f [i

][j]

f[i][j]

f[i][j

] 為前 i

ii 個節點用了 j

jj 個顏色:

f [i

][j]

=f[i

−1][

j]+f

[i−1

][j−

1]∗(

k−i+

1)

f[i][j]=f[i-1][j]+f[i-1][j-1]*(k-i+1)

f[i][j

]=f[

i−1]

[j]+

f[i−

1][j

−1]∗

(k−i

+1)

#

include

using

namespace std;

typedef

long

long ll;

const

int mod=

1e9+7;

ll f[

400]

[400];

intmain()

ll res=0;

for(

int i=

1;i<=k;i++

) res=

(res+f[n]

[i])

%mod;

cout

}

牛客練習賽1 B 樹題解

演算法分析 解題 shy有一顆樹,樹有n個結點。有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對 x,y x到y的路徑上的所有點的顏色都要與x和y相同。請統計方案數。第一行兩個整數n,k代表點數和顏色數 接下來 n 1 行,每行兩個整數 x,y 表示 x 與y之間存...

新生練習賽1 B

acm的學長最近在henu附近supermarket打工。一天之中,他的工作時間是l分鐘。這位學長記性非常好,他已經記住了n位老客戶,其中第i位顧客是在一天開始工作後的ti分鐘到來,並且服務這位顧客需要花費li分鐘。此外當學長為另一位客戶提供服務時,保證不會有任何客戶到達。然鵝,學長想要想要在忙碌中...

牛客練習賽1

a矩陣 題意 給出乙個n m的矩陣。讓你從中發現乙個最大的正方形。使得這樣子的正方形在矩陣 現了至少兩次。輸出最大正方形的邊長。n 500,m 500 題解 考慮暴力 列舉每個矩陣為 n 3 然後判斷兩個矩陣是否相等 n 2 顯然複雜度 如果將矩陣進行hash 然後o 1 判斷兩個矩陣是否相等,那麼...