解題報告 luogu P2015

2022-04-30 01:42:10 字數 581 閱讀 3396

其實就是這題的雙倍經驗啦。

動態轉移方程是

\[f[i][j]=max(f[i][j],f[i][i-k-1]+f[i_][k]+e[i].w)

\]這裡\(f[i][j]\)代表從以\(i\)為根的子樹中合法留\(j\)個樹枝的最大剩餘值。

#include#include#includeconst int maxn=105;

using namespace std;

typedef long long ll;

ll f[maxn][maxn],c;

int n,s,l,r,root,tot[maxn];

struct node

e[maxn<<1];

int head[maxn],cnt=0;

int deg[maxn];

void add(int u,int v,ll c)

int dfs(int cur,int fa)

} return tot[cur];

}int main()

{ scanf("%d%d",&n,&s);

for(int i=1;i好像這就是樹形揹包了呢。

Luogu P2015 二叉蘋果樹

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

luogu P2015 二叉蘋果樹

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

Luogu P2015 二叉蘋果樹

題目鏈結 樹上零一dp 記憶化搜尋 如果是空結點 如果是葉子結點直接返回蘋果數 以上都不滿足的話,dp狀態轉移 設定dp的轉移,轉移到左右兒子結點 for int i 1 i結果31分 1.說白了,記憶化搜尋還不是掌握的特別好 2.其次狀態設計不是特別好,在儲存左右兒子時,應該該需要儲存邊的 inc...