樹形DP 模版題 p2015

2021-09-25 13:41:35 字數 684 閱讀 5095

狀態轉移方程也就顯而易見了:

f[u][i]=max(f[u][i],f[u][i-j-1]+f[v][j]+e[i].w)

( 1≤i≤min(q,sz[u]),0≤j≤min(sz[v],i−1) )

u表示當前節點,v是u的乙個子節點,sz[u]表示u的子樹上的邊數,q就是題目中要求的最多保留邊數

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

#define gc getchar

#define maxn 105

using namespace std;

inline ll read()

while(isdigit(p))

return f?-a:a;

}int n,m,f[maxn][maxn];

struct ahahae[maxn<<1];int tot,head[maxn];

inline void add(int u,int v,int w);head[u]=tot++;

}int sz[maxn];

void dfs(int u,int fa)

}int main(){memset(head,-1,sizeof head);

n=read();m=read();

for(int i=1;i結束

P2015 二叉蘋果樹(樹形dp)

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

樹形dp入門 P2015 二叉蘋果樹

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

洛谷P2015 蘋果二叉樹(樹形dp)

給出乙個n個點的二叉樹,樹上有邊權,求留下q個樹枝能夠獲得的最大收益為多少。dp i j d p i j 表示在以 i i 為根的節點,留下 j role presentation j j個分支,的最大收益值。設u u 為當前遍歷到的根節點,v role presentation v v為訪問的子節...