2)搜索的技巧和优化 (poj3411,poj1724)(3)记忆化搜索(poj3373,poj1691)五.动态规划(1)较为复杂的动态规划(如动态规划解特别的施行商问题等)(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)(3)树型动态规划(poj2057,poj1947,poj2486,poj...
poj 2486(树形DP+背包) 其实就是以dfs的顺序进行背包处理. 想了快一天,终于1A了, 但是虽然过了,但是心里还是有点虚,可能对背包的原理没有透彻掌握,所以宏观上看是可行的,但是一想到一步一步的具体转移时又会觉得很混乱. 一、首先这种题要做的是确定状态, 每个结点要记录什么状态 ? 这题根据题意要记录的是 ...
poj2486 Apple Tree (树形dp) #include 题意:有一颗苹果树,树上的u节点上有num[u]个苹果,树根为1号节点,囧king从根开始走,没走到一个节点就把接点上的苹果吃光,问囧king在不超过k步的情况下最多吃多少个苹果。 1. 解题思路:处理出两个dp数组,f1[u][i]表示在不超过i步的情况下,从u节点开始,往下...
从u结点出发但是最后不会到u的所以情况 dp[u][k] , k=0,1,2,3... (这个也是我们要求得最终答案) 这层状态需要用到dp1[vi][] 和 dp[vi][] 一起 for(inti=k;i>=0;i--)for(intj=0;j<=k;j++) {if( i-2-j >=0) dp[u][i]=max(dp[u][i],dp[u][i-2-j]+dp1[vi][j]);/...
POJ-2486 Apple Tree 树形DP 这题和POJ1947类似, 同样是树形DP, 就是因为按照上题的思路写, 导致写的是非常的蛋疼. 调了几小时还是无果. 时候证明还是对状态的意义理解的不透彻. 设dp[x][0][j]表示以节点x为根至多走j步并且返回x处所能够得到的最多苹果....
(3)树型动态规划(poj2057,poj1947,poj2486,poj3140) 六.数学 (1)组合数学: 1.容斥原理. 2.抽屉原理. 3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026). 4.递推关系和母函数. (2)数学. 1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222) 2.概率问题. (poj3071,poj3440) 3.GCD、扩...
(3)树型动态规划(poj2057,poj1947,poj2486,poj3140) 六.数学 (1)组合数学: 1.容斥原理. 2.抽屉原理. 3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026). 4.递推关系和母函数. (2)数学. 1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222) 2.概率问题. (poj3071,poj3440) 3.GCD、扩...
POJ 2486 Apple Tree (树形DP,树形背包) 树形DP子树文章分类代码人生 题意:给定一棵树图,一个人从点s出发,只能走K步,每个点都有一定数量的苹果,要求收集尽量多的苹果,输出最多苹果数。 思路: 既然是树,而且有限制k步,那么树形DP正好。 考虑1个点的情况:(1)可能在本子树结束第k步(2)可能经过了j步之后,...
poj2486 Apple Tree (树形dp+分组背包) 题目链接:https://vjudge.net/problem/POJ-2486 题意:一棵点权树,起点在1,求最多经过m条边的最大点权和。 思路: 树形dp经典题。用3维状态,dp[u][j][0/1]表示在子树u中走j步的最大价值(回到u/不回到u)。显然dp[u][j][1]>=dp[u][j][0],所以dp[...
poj 2486 树形DP 子树合并 大致思路是从根节点DFS下去后,处理完子树信息后,合并然后得出根节点信息, 但是这一题子节点信息的合并确实比较棘手. 如果我们尝试把从当前根节点走K步得到最大苹果数,划分为如下两种: go[t][i]代表节点t的所有子树上走i步不返回,取得的最大苹果数...