二叉蘋果樹 樹型DP 揹包

2021-06-22 01:17:33 字數 735 閱讀 6818

二叉蘋果樹

有一棵蘋果樹,如果樹枝有分叉,一定是分2叉(就是說沒有只有1個兒子的結點)。這棵樹共有n個結點(葉子點或者樹枝分叉點),編號為1-n,樹根編號一定是1。

我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹:

2   5

\  /

3  4

\  /

現在這顆樹枝條太多了,需要剪枝。但是一些樹枝上長有蘋果。

給定需要保留的樹枝數量,求出最多能留住多少蘋果。

輸入格式:

第1行2個數,n和q(1<=q<= n,1每根樹枝上的蘋果不超過30000個。

輸出格式:

乙個數,最多能留住的蘋果的數量。

輸入樣例:

5 21 3 1

1 4 10

2 3 20

3 5 20

輸入樣例:

解題思路:樹型dp+揹包求解。

f(i, j) 表示子樹i,保留j個節點(注意是節點)的最大權值。每條邊的權值,把它看作是連線的兩個節點中的兒子節點的權值。

那麼,就可以對所有i的子樹做分組揹包,即每個子樹可以選擇1,2,...j-1條邊分配給它。

狀態轉移為:

f(i, j) = max

int dfs(int u,int ff)

{ tot[u]=1;

int i,j,k;

for(i=0;i1;j--)

{ for(k=1;(k

二叉蘋果樹 二叉樹樹型DP

傳送門 中文題面 有一棵蘋果樹,如果樹枝有分叉,一定是分 2 叉 就是說沒有只有 1 個兒子的結點,這棵樹共有n 個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有 4 個樹枝的樹 2 5 3 4 1 現在這顆樹枝條太多...

1661 二 蘋果樹 樹型DP

有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹 2 5 3 4 1現在這顆樹枝條太多了,需要剪枝。但是一些樹枝上長有蘋...

二叉蘋果樹 樹形DP

題意 description 有一棵蘋果樹,如果樹枝有分叉,一定是分2叉 就是說沒有只有1個兒子的結點 這棵樹共有n個結點 葉子點或者樹枝分叉點 編號為1 n,樹根編號一定是1。我們用一根樹枝兩端連線的結點的編號來描述一根樹枝的位置。下面是一顆有4個樹枝的樹 2 5 3 4 1 現在這顆樹枝條太多了...