启发式合并
IcePrincess_1968
这个作者很懒,什么都没留下…
展开
-
Codeforces #778C: Peterson Polyglot 题解
考虑启发式合并 对于每个点,我们考虑删去它以后,它的子树们合并之后能减少多少个点,每次把小子树向大子树合并即可,这个点的贡献加到它所在的深度中 最后统计一波答案即可 下面简证为什么这样启发式合并的复杂度是O(nlogn)O(nlogn)O(nlogn)的 我们考虑某一个节点u,他可能会在若干次合并操作中被用到,具体来说,它会在它的若干祖先中以不同的深度被用到 假设节点u在若干子树中深度分...原创 2018-04-08 13:26:24 · 462 阅读 · 0 评论 -
BZOJ2733: 永无乡 题解
考虑线段树合并,初始的时候对每个点建一棵动态开点线段树,merge两棵线段树的时候只要像这样操作:如果root1和root2中有一个为0,则直接返回另一个递归的调用merge处理左子树和右子树下面简证这样的复杂度是O(nlogn)O(nlogn)O(nlogn) 刚开始每棵线段树中只有一个元素,所以每棵线段树只有lognlognlogn个节点,所以刚开始的总结点数是nlognnlo...原创 2018-04-09 13:29:58 · 208 阅读 · 0 评论