poj 2486
题意: 给一棵树,树上每个节点有个有k的苹果,这k个苹果
吃了后就没有了,走到一个节点都会全部吃完节点的苹果。
如果给定一定的步数,问你怎么走才能吃到最多的苹果?
一道比较好的树形dp
我自己想到的地方对每个节点做背包,但是要考虑到有回路
的地方,那怎么处理走回来的情况呢?
开始的时候我是想到走回来的花费不就是走的路径*2吗?
结果怎么也不过
后来用测试数据调才发现,这个想法是错误的。
有回到原点的方法的花费不一定是走的路径的2倍。
因为可能多次走回这个节点。所以要另外再开一个数组,记
录走回到原点的花费k的步数的可以吃到的最多苹果。
另一维的dp的记录不走回到原点的花费k步的可以吃到的最多
苹果。
两个同时更新就可以得出结果。