摘要:
说好的开始搞树形DP,前两天一直沉迷于游戏之中,昨天又玩了一整天炉石。ORZ今天搞搞憋出了第一道。中文题就不说题意了思路:dp[i][j]表示以i为根的子树攻克j个城堡的最大收获。一开始的时候要加一个零号结点上去,指向所有能被直接攻克的点。然后初始dp[v][1] = vex[v](状态转移从1开始)原因是先要攻克根才能攻克子树所以要更新子树的话根是一定要被攻克的。然后dp[v][k+j] = max(dp[v][k+j], dp[v][k]+dp[ch][j]) ch枚举每颗子树。代码如下: 1 /*********************************************** 阅读全文