2486专题

POJ 2486 Apple Tree 树形DP

有一颗苹果树,每个节点上面有很多苹果,从一个节点到另外一个可以到达的节点花费1步,求k步最多能吃到多少苹果。 dp[root][j][0]为以root为根的子树走j步路在回到root最多获得多少苹果,dp[root][j][0]为以root为根的子树走j步路不回到root最多获得多少苹果。 dp[root][j][0] = max(dp[root][j][0], dp[root][j-l][0]

POJ - 2486 :Apple Tree 树上有依赖背包

传送门 题目描述 一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走k步,最多能遍历到的权值。 分析 首先我们可以去dfs每一个为为根节点的时候,子树走 k k k步的时候的最大权值,但这里涉及到一位问题,因为每一条边可以重复走,所以会不会有回头的情况 我们用 f [ i ] [ j ] [ 0 / 1 ] f[i][j][0/1] f[i][j][0/1]表示在 i

【数据结构 树 树链剖分】luogu_2486 [SDOI2011]染色

题意 求树上路径点颜色的块数,带修改操作。 思路 先把树剖成若干链,用线段树维护区间的块数。 查询统计答案时,当一条链调到另一条链,判断一下这两个端点是否相等(即为同一块)。两个点跳时都这样操作。 当两个点到了同一条链上,需要两个端点都和它们上一次查询到的端点判断(因为在循环中去掉的是上一次和现在的重复,此处是循环结束后特判)。 细节详见代码。 代码 #include <cstdi