dp[u][i]表示在以u為根節點的子樹上,選i個物品的最大價值。
然後轉移方程就是dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]),就是他可以從當前已更新的部分選j-k個,然後在要更新的那個兒子節點那裡選k個,v是當前更新到的子節點,這樣把k從1到j-1掃一遍,就把這個子節點更新了。
#include
using
namespace
std;
const
int maxn=205;
const
int maxm=205;
struct nodee[maxm];
int head[maxn],tot;
int n,m;
int v[maxn],dp[maxn][maxn];
void add(int u,int v)
void init()
void dfs(int x)
dfs(0);
printf("%d\n",dp[0][m]);
}return
0;}
cdoj 1136 邱老師玩遊戲 樹形揹包
邱老師玩遊戲 time limit 20 sec memory limit 256 mb 題目連線 description 邱老師最近在玩一種戰略遊戲,在乙個地圖上,有n座城堡,每座城堡都有一定的寶物,在每次遊戲中邱老師允許攻克m個城堡並獲得裡面的寶物。但由於地理位置原因,有些城堡不能直接攻克,要攻...
cdoj 1136 邱老師玩遊戲 樹形揹包
time limit 20 sec memory limit 256 mb 邱老師最近在玩一種戰略遊戲,在乙個地圖上,有n座城堡,每座城堡都有一定的寶物,在每次遊戲中邱老師允許攻克m個城堡並獲得裡面的寶物。但由於地理位置原因,有些城堡不能直接攻克,要攻克這些城堡必須先攻克其他某乙個特定的城堡。你能幫...
cdoj 1136 邱老師玩遊戲 樹形揹包
time limit 20 sec memory limit 256 mb 邱老師最近在玩一種戰略遊戲,在乙個地圖上,有n座城堡,每座城堡都有一定的寶物,在每次遊戲中邱老師允許攻克m個城堡並獲得裡面的寶物。但由於地理位置原因,有些城堡不能直接攻克,要攻克這些城堡必須先攻克其他某乙個特定的城堡。你能幫...