树的最大独立集
樹的獨立集問題可以用樹形dp求解
最大獨立集
對于iii節點的子樹:dp[i][0]dp[i][0]dp[i][0]表示不選擇節點i的最大獨立集,dp[i][1]dp[i][1]dp[i][1]表示選擇節點i的最大獨立集
dp[i][0]=∑i=1i=nmax(dp[soni][0],dp[soni][1])dp[i][0] = \sum\limits_{i=1}^{i=n}max(dp[son_i][0], dp[son_i][1])dp[i][0]=i=1∑i=n?max(dp[soni?][0],dp[soni?][1])
dp[i][1]=∑i=1i=ndp[soni][0]dp[i][1] = \sum\limits_{i=1}^{i=n}dp[son_i][0]dp[i][1]=i=1∑i=n?dp[soni?][0]
唯一性判斷
- flag[u][1]flag[u][1]flag[u][1]取決于flag[v][0]flag[v][0]flag[v][0]
- flag[u][0]flag[u][0]flag[u][0]取決于max(dp[v][0],dp[v][1])的flag值max(dp[v][0], dp[v][1])的flag值max(dp[v][0],dp[v][1])的flag值
總結
- 上一篇: HDU - 6625 three arr
- 下一篇: HDU - 6635 Nonsense