随笔分类 -  数据结构 -- 长链剖分

摘要:传送门 神仙题。。简单版本很好做,做法也很多。 加强版$n\leq 105$,显然之前的$O(n2)$的做法时间、空间复杂度都不能承受。 考虑维护以深度有关的$dp$: $f[i][j]$表示以$i$为根节点的子树中,深度为$j$的点有多少个。 显然这个很好维护,转移$\displaystyle f 阅读全文
posted @ 2020-06-13 11:57 heyuhhh 阅读(256) 评论(0) 推荐(0) 编辑
摘要:传送门 显然每次只会取当前最大的长链。 那么每次直接将所有长链的权值扔到一个堆里面,最后取出$k$次即是最终答案。 写法上类似于树链剖分: /* * Author: heyuhhh * Created Time: 2020/6/11 9:49:25 */ #include <iostream> #i 阅读全文
posted @ 2020-06-13 11:38 heyuhhh 阅读(184) 评论(0) 推荐(0) 编辑
摘要:传送门 长链剖分模板题。 因为转移跟深度有关,所以我们直接继承深度最大的儿子的信息,其余暴力转移即可。 继承不可能枚举,否则和直接转移复杂度无异,这里利用指针即可。 其余暴力转移根据长链的性质复杂度不超过$O(n)$。 代码如下: /* * Author: heyuhhh * Created Tim 阅读全文
posted @ 2020-06-10 21:46 heyuhhh 阅读(266) 评论(0) 推荐(0) 编辑