
长链剖分
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
「学习笔记」[POI2014] bzoj 4543 Hotel加强版 - 长链剖分 - 学习笔记
长链剖分定义是把最大子树改为最大深度(下文沿别的blog仍然称为重儿子)。 第一个应用是要求O(nlgn+q)的时间复杂度内求k级祖先(并且强制在线)。做法是长链剖分有这样一个性质:一个点x的k级祖先y,从y走到链底长度不小于k,这个显然。现在要求x的k级祖先,做法是对每个点维护朴素倍增算法的倍增数组,以及对每条链的链顶(假设这条链长度是len)维护沿这条链向下len步和向上len步共O(2le...原创 2018-08-31 19:23:33 · 240 阅读 · 0 评论 -
银河战舰 - 长链剖分 - dp
题目大意:给你一颗树,求一条路径使得其LIS最长。n≤2×105n\le2\times10^5n≤2×105 题解:考虑维护从子树走到当前点的LIS和LDS的那个栈数组,然后长链剖分来保证复杂度即可,其余和朴素LIS类似,合并数组的时候直接取min即可。 注意一些细节。 #include<iostream> #include<cstring> #include<cst...原创 2018-09-28 16:22:09 · 369 阅读 · 0 评论 -
bzoj 4675 点对游戏 - 长链剖分
题解:根据期望的线性性,可知答案是(n−2k−2)(nk)∑1≤u&amp;lt;v≤ndist(u,v)∈M\frac{\binom{n-2}{k-2}}{\binom nk}\sum_{1\le u&amp;lt;v\le n}\mathrm{dist}(u,v)\in M(kn)(k−2n−2)∑1≤u&lt;v≤ndist(u,v)∈M。后半部分直接长链剖分即可。 #include...原创 2018-10-09 12:22:19 · 398 阅读 · 0 评论 -
tree - dp - 长链剖分
题目大意: 给你一颗树,点有点权,对所有三元组(x,y,z),满足dis(x,y)=dis(y,z)=dis(x,z),统计a(x)a(y)+a(x)a(z)+a(y)a(z)的和。n<=100000。 题解: 条件等价于存在一个中心点。 枚举三个点的LCA,然后劈成两半,一半是链,一半是Y倒过来写,发现二者能合并当且仅当链长等于Y倒过来写的下面长度减去上面长度,而这二者不超过子树深度,因此...原创 2018-11-20 16:47:47 · 210 阅读 · 0 评论