1661 二 蘋果樹 樹型DP

2021-09-25 03:02:56 字數 914 閱讀 6732

有一棵蘋果樹,如果樹枝有分叉,一定是分2叉(就是說沒有只有1個兒子的結點)

這棵樹共有n個結點(葉子點或者樹枝分叉點),編號為1-n,樹根編號一定是1。

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

2 5\ /

3 4\ /

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

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

第1行2個數,n和q(1<=q<= n,1乙個數,最多能留住的蘋果的數量。

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn =

210;

struct edgee[maxn*10]

;int head[maxn]

,tot,n,m,f[maxn]

[maxn]

,num[maxn]

,val[maxn]

;void

add_edge

(int u,

int v,

int w)

voiddp(

int u,

int fa)

}void

dfs(

int u,

int fa)

return;}

intmain()

dfs(1,

0);dp

(1,0

);printf

("%d\n"

,f[1

][m+1]

);return0;

}

二 蘋果樹 樹型動態規劃

題目大意 對於乙個二叉樹,除根節點外,每個節點都有相應的乙個權值。在此基礎上,求保留多少個點使得其仍然滿足樹的性質且權值總和最大。分析 先建樹。ch v,1 ch v,2 分別存v節點的左右孩子。dp v,l 存以v為根的樹保留l個節點的最大權和。num v 為點v的權值。dp v,l max 0 ...

二叉蘋果樹 樹型DP 揹包

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

二叉蘋果樹 二叉樹樹型DP

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