題目
shy有一顆樹,樹有n個結點。有k種不同顏色的染料給樹染色。乙個染色方案是合法的,當且僅當對於所有相同顏色的點對(x,y),x到y的路徑上的所有點的顏色都要與x和y相同。請統計方案數。一看題兩眼發懵,最終還是看題解了。利用dfs序來dp.先通過dfs確定dfs序(不用記錄回溯),之後分析一下,再選dfs序中第i個時他要麼新選乙個顏色,要麼和他父親顏色相同,而因為是dfs序,他父親已經選過。這樣得到如下遞推公式:
d[i][j]表示覆蓋dfs序前i個節點用了j種顏色d[i][j]+=d[i-1][j-1]*(k-j+1) 選乙個新顏色
d[i][j]+=d[i-1][j] 與它父親選同乙個顏色(選完前乙個時它父親顏色已確定,所以加上d[i-1][j])
//please ac
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int maxn=
300+5;
const
int mod=
1e9+7;
int n,k,cnt=
0,pre[maxn]
,fa[maxn]
,w[maxn]
;ll d[maxn]
[maxn]
;vector<
int> mp[maxn]
;void
dfs(
int s,
int f)}}
intmain()
dfs(1,
0); d[0]
[0]=
1;for(
int i=
1;i<=n;i++)}
ll ans=0;
for(
int i=
1;i<=k;i++
)printf
("%lld\n"
,ans)
;return0;
}
Leetcode刷題記錄 53 最大子序和
小菜鳥第一次接觸動態規劃,請多包涵 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。在這個問題中,我們將求解最大和連續子陣列分解為求解到當前...
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...