sdoi2017苹果树】的更多相关文章

题目描述 https://www.luogu.org/problemnew/show/P3780 题解 一道思路巧妙的背包题. 对于那个奇怪的限制,我们对此稍加分析就可以发现它最后选择的区域是一个包含根节点的联通块. 对于\(t-h\leq k\)这个限制,我们可以把它看做是可以选择一条从根到某个节点的一条链,在这条链上不耗费任何代价的拿一个苹果,但是再去拿其它苹果是要有代价的. 根据贪心,我们的链一定是一直选到叶子的,所以我们最后是要枚举岁有的叶子. 在这个时候我们可以想到在枚举这个叶子的时候…
题解: 非常奇妙的一题.. 没有免费操作我都不会$nk$....考试打个暴力就可以走人了 树上有依赖背包问题的正确做法是(为啥我之前学的不是这样的啊) 按照后续遍历做背包 做到一个点的时候 枚举它选不选 不选只能从子树外转移 选的话可以从x-1转移 而不是对每个点求一次$f[i][j]$ 这样是$n*k^2$ 前者不管是多重背包还是0/1背包 复杂度都是$nk$的(单调队列优化) 将题目给的条件转化,变成有一条链是免费 我们会发现这样求出的路径是它到根的路径的左边和自己子树的背包 那么我们可以想…
BZOJ 洛谷 \(shadowice\)已经把他的思路说的很清楚了,可以先看一下会更好理解? 这篇主要是对\(Claris\)题解的简单说明.与\(shadowice\)的做法还是有差异的(比如并没有明显用到后序遍历的性质),而且用这种写法可能跑的比较轻松? (另外你只要想明白\(f,h\)是代表啥,就很好理解了...) 问题等价于树形依赖背包,允许一条链每个点各免费取一次. 免费取一条链即\(t\leq h+k\)的限制.这样最优解一定会免费取了一条从叶子到根节点的链. 现在考虑一下怎么做.…
问题等价于树形依赖背包,允许一条链每个点各免费一次. 设$f[i][j]$表示按DFS序考虑到$i$,体积为$j$的最大收益. 先放入不能免费的物品,等遍历完儿子后再放入必选的物品,那么$i$到根路径上所有点都只算了不能免费的部分. 然后将DFS序翻转,设$h[i][j]$表示按DFS序考虑到$i$,体积为$j$的最大收益. 等遍历完儿子后再放入必选的物品和不能免费的物品,那么$i$到根路径上所有点都没有算. 如此一来,对于每个叶子$i$,用$f[i][j]+h[i][k-j]$更新答案即可.…
原文链接 https://www.cnblogs.com/cly-none/p/9845046.html 题意:给出一棵\(n\)个结点的树,在第\(i\)个结点上有\(a_i\)个权值为\(v_i\)的物品.\(1\)号结点是根结点.你需要选出若干个物品(设选了\(t\)个),满足: 如果选了结点\(i\)上的物品,那么\(i\)到根的链上每个结点都至少要选一个物品. 设有选取物品的结点的最大深度为\(h\),那么\(t \leq h + k\),\(k\)为一个给定的常数. 在此基础上,你需…
[POI2011]OKR-Periodicity 考虑递归地构造,设 \(\text{solve(s)}\) 表示字典序最小的,\(\text{border}\) 集合和 \(S\) 的 \(\text{border}\) 集合相等的字符串. 设 \(S\) 的最长 \(\text{border}\) 是 \(t\),我们分下列几种情况讨论: 第一种情况,\(S\) 不存在 \(\text{border}\),那么最优的方案就是 \(0,0...1\)(长度为 \(1\) 的话就是 \(0\))…
收录一些比较冷门的 DP 优化方法. 1. 树上依赖性背包 树上依赖性背包形如在树上选出若干个物品做背包问题,满足这些物品连通.由于 01 背包,多重背包和完全背包均可以在 \(\mathcal{O}(V)\) 的时间内加入一个物品,\(\mathcal{O}(V ^ 2)\) 的时间内合并两个背包,所以不妨设背包类型为多重背包. 先考虑一个弱化版问题.给定一棵有根树,若一个节点被选,则它的父亲必须被选. 显然存在一个 \(\mathcal{O}(nV ^ 2)\) 的树形 DP 做法,它能求出…
题解 显然权值都是正的,我们最深的那个点一定延伸到了某个叶子 我们抛去这条链之外再选K个点即可 如果直接对一棵树选K个点,满足这样的依赖关系,可以通过一个后序遍历的顺序做出来 转移方法是 \(dp[i][j] = dp[i - 1][k] + (j - k) * v\) 或者 \(dp[i][j] = dp[i - siz[u]][j]\) 代表这个点选或者不选 我们把每个点拆成1和a[i] - 1两个点,然后做两次儿子遍历顺序恰好相反的dp 我们枚举一个叶子的时候,在这个点右侧这两个后序遍历重…
这套题实在是太神仙了..做了我好久...好多题都是去搜题解才会的 TAT. 剩的那道题先咕着,如果省选没有退役就来填吧. 「SDOI2017」龙与地下城 题意 丢 \(Y\) 次骰子,骰子有 \(X\) 面,每一面的概率均等,取值为 \([0, X)\) ,问最后取值在 \([a, b]\) 之间的概率. 一个浮点数,绝对误差不超过 \(0.013579\) 为正确. 数据范围 每组数据有 \(10\) 次询问. \(100\%\) 的数据,\(T \leq 10\),\(2 \leq X \l…
题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上的路径. 比如一颗树 首先,我们要把树剖分成树链.定义: fa[x]是x节点的上一层节点(就是他的爸爸). deep[x]是x节点的深度. num[x]是x节点下面的子节点的数量(包括自己) son[x]重儿子:一个节点的儿子的num[x]值最大的节点.其他的儿子都是轻儿子. 重链:重儿子连接在一起…