
树链剖分
文章平均质量分 52
范艺杰
这个作者很懒,什么都没留下…
展开
-
51nod1547 塔瓦斯路径
题目 题目链接 解题思路 使用树链剖分和离线。 按照权值大小不断添加边,将边权转化成点权,用线段树维护区间值。 复杂度O(nlog22n)O(nlog_2^2n)O(nlog22n)。 代码 #include <cstdio> #include <algorithm> #include <cstring> #include <vector> using namespace std; typedef long long ll; void read(int原创 2021-03-25 23:14:12 · 152 阅读 · 3 评论 -
51nod1782 圣诞树
题目 题目链接 解题思路 对整棵树进行轻重链剖分,将一棵树剖分成若干链。 按照树的剖分,我们可以将礼物划分到至多log2nlog_2nlog2n个链上。 对于一条链而言,我们使用平衡树来维护礼物,从而做到插入删除和查询前k大异或和。 这里平衡树使用fhq-treap,这是一种无旋平衡树,平衡策略与treap相同。通过分离和合并操作构建出treap旋转后相同的平衡树。fhq-treap代码量小,常数小,有因其无旋,也支持可持久化。是一种强大的平衡树。 整体复杂度O(nlog22n)O(nlog_2^2n)原创 2021-03-14 21:16:57 · 173 阅读 · 0 评论