树形DP
OriginalRecipe
这个作者很懒,什么都没留下…
展开
-
树上的等差数列 HihoCoder - 1676 树形DP
题目链接:Hihocoder-1676主要思路:不难看出本题要用到树形DP,而边权差值有正有负,故dp数组第二维开map,dp[i][j]代表对于每个结点维护从这个结点走值为j的边最多能走dp[i][j]个点(不包括i)。dp[i][j]=max(dp[nxt][j]+1),同时更新ans=max(ans,dp[now][j]+dp[now][-j]+1)。若val[i]==val[nxt...原创 2018-08-22 20:32:47 · 207 阅读 · 0 评论 -
Arrest HDU - 3069 树形DP
题目链接:HDU-3069主要思路:对于每棵子树,若其为叶子结点,那么其扫清这颗子树内所有盗贼所需最小警力为1。若其不为叶子结点,扫清这颗子树内所有盗贼所需最小警力为这颗子树根结点的所有子结点内所需最多警力,若有多个还要加1.解释:对不为叶子结点的子树,先将其所需根节点下子节点所需警力少的子树(后面的子树都指根节点的子树)扫完(哪一个放在根节点看门),最后清那个所需警力最大的子树,有多...原创 2018-08-22 21:14:58 · 194 阅读 · 0 评论 -
Rebuilding Roads POJ - 1947 树形DP
题目链接:POJ-1947主要思路:其实代码挺好打的,就在于能不能想到。(从题目的两个维度出发,删掉几条边,留下几个点)不难看出这是一道树形DP题。dp[i][j]的含义为对于结点i的子树内,保留j个结点最少要减dp[i][j]条边。故dp[i][j]=min(dp[nxt1][c1]+dp[nxt2][c2]+……)。∑ci=j nxt为now的子节点。同时对于处理每个子节点的子树时...原创 2018-08-22 22:16:59 · 161 阅读 · 0 评论 -
「HNOI2014」世界树 虚树
「HNOI2014」世界树前置技能:虚树。(本题可以通过以下相似的思想用线段树维护子树信息和倍增找中点完成,代码短很多,但本篇题解不涉及)题解部分这种总询问点数不大,但是询问次数多,可以想到用虚树来优化。我们把所有询问点看成关键点建一颗虚树。对于虚树上的点我们是可以求出离它最近的点。那么对于那些被隐藏的点。这里有两种被隐藏的点。(以下为有根树)其中黑色和橙色的为虚树上的点,灰色的就是...原创 2019-04-21 19:56:53 · 412 阅读 · 0 评论 -
「APIO2014」连珠线 树形DP
「APIO2014」连珠线Part0O(n2)O(n^2)O(n2)的暴力我们看一下这个这一个连珠线的产生过程。确定了一个根后,我们定义折链为LCA不为这两个点的链。就像下图这样。我们定义中心点为一对蓝线产生时加入的点,每个点只能为一对蓝线产生时加入的点。如果我们确定一个根,一个个在原有的点上往下加点时我们是不会加出折链的。故如果我们确定一个点为两个蓝线的中点,只有可能是它的父亲与他...原创 2019-04-18 13:35:44 · 259 阅读 · 0 评论