演算法分析
解題**
shy有一顆樹,樹有n個結點。有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對(x,y),x到y的路徑上的所有點的顏色都要與x和y相同。請統計方案數。
第一行兩個整數n,k代表點數和顏色數;接下來 **n-1 **行,每行兩個整數 **x,y **表示 **x **與y之間存在一條邊;
輸出乙個整數表示方案數**(mod 1e9 + 7)**。
4 3
1 22 3
2 4
39
對於30%的資料,n≤10, k≤3;
對於100%的資料,n,k≤300。
題目的結果與樹的形態無關, 乙個點染上什麼顏色是和前乙個點相關。
一道簡單的dp問題
dp狀態轉移方程:
#include
using
namespace std;
typedef
long
long ll;
const ll mode =
1e9+7;
ll dp[
305]
[305];
intmain()
//dp含義:前i個節點用j種顏色填充的方案數
dp[0]
[0]=
1;//前0個節點用0個顏色填充,就一種方案
for(
int i =
1; i <= n; i++
)for
(int j =
1; j <= k; j++
)//因為最多k個顏色,那麼就可以用1~k種顏色去填充
//那麼方案數就是1~k種顏色的結果總和
ll ans =0;
for(
int i =
1; i <=k; i++
) ans =
(ans + dp[n]
[i])
% mode;
cout << ans << endl;
return0;
}
牛客練習賽 1 B 樹
有一顆樹,有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對 x,y x,y x,y x xx 到 y yy 的路徑上的所有點的顏色都要與 x xx 和 y yy 相同,請統計方案數 易得乙個節點要麼塗和父節點乙個顏色,要麼塗沒有出現過的顏色 假設我們遍歷到了第 x ...
新生練習賽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 判斷兩個矩陣是否相等,那麼...