二叉蘋果樹(樹形DP)

2022-03-29 08:38:01 字數 830 閱讀 3257

原題

顯然我們考慮這道題目可以很蠢的寫乙個dp對吧。

考慮\(dp_i,j\)表示以i為根,保留j個節點的最大蘋果數。

然後就可以樹形dp的寫了。

#include#include#include#include#include#include#include#define ll long long

#define file(a) freopen(a".in","r",stdin)//;freopen(a".out","w",stdout)

using namespace std;

inline int gi()

while(ch>='0' && ch<='9')

return f*sum;

}inline ll gl()

while(ch>='0' && ch<='9')

return f*sum;

}const int maxn=110,maxq=110;

int dp[maxn][maxq],to[maxn<<1],nxt[maxn<<1],front[maxn],cnt,val[maxn],ans,son[maxn],fa[maxn],n,q,w[maxn<<1],son[maxn][3];

void add(int u,int v,int w)

void dfs(int u,int f)

}int tree_dp(int u,int q)

int main()

dfs(1,1);

printf("%d\n",tree_dp(1,q));

return 0;

}

二叉蘋果樹 樹形DP

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

樹形DP 二叉蘋果樹

有一棵二叉蘋果樹,如果樹枝有分叉,一定是分兩叉,即沒有只有乙個兒子的節點。這棵樹共 n 個節點,編號為 1 至 n,樹根編號一定為 1。我們用一根樹枝兩端連線的節點編號描述一根樹枝的位置。一棵蘋果樹的樹枝太多了,需要剪枝。但是一些樹枝上長有蘋果,給定需要保留的樹枝數量,求最多能留住多少蘋果。這裡的保...

二叉蘋果樹 樹形dp

p2015 二叉蘋果樹 洛谷 電腦科學教育新生態 luogu.com.cn 嗚嗚嗚嗚,真的是一道厲害題 至少對目前的我來說 研究了乙個小時。首先,因為我們不知道一對座標中,誰是父親,誰是兒子,所以用無向圖把二者連起來,但最後dfs的時候還是只用其中乙個。狀態表示 i的子樹上保留j條邊時蘋果的最大值 ...