
启发式合并
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
Lomsat gelral CodeForces - 600E
http://codeforces.com/problemset/problem/600/E 树上启发式合并就是暴力 但是利用dfs序的特点 把最大子树放在最后 递归返回时可以省去更新该子树 因为一个点到祖先的路径中 轻边的数量是logn左右的 所以一个点最多被更新logn次 从而把时间降到nlogn 详细请参考https://blog.youkuaiyun.com/ZJZNKU/article/deta...原创 2018-11-11 18:58:28 · 231 阅读 · 0 评论 -
Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths CodeForces - 741D
http://codeforces.com/contest/741/problem/D 问每棵子树上最长的满足条件的简单路径的长度 22个字母状压一下 保存每个节点到祖先的异或值 这样两节点u和v异或时 从lca到祖先这一部分的值会被抵消 巧妙的思路 然后就可以用树上启发式合并搞 保存每个异或值对应的最大深度 看一棵子树上异或值满足条件且经过子树根节点的两点的最远距离 类似树分治的思想 一...原创 2018-11-12 15:06:20 · 269 阅读 · 0 评论 -
「LibreOJ β Round #2」DP 一般看规律 LOJ - 516
https://loj.ac/problem/516 将所有x变为y 其实就是将x与y对应集合合并 最终经过n-1次合并后 集合数变为一个 所以在合并两个集合时 通过启发式合并 即总是将小集合并入大集合 这样最后复杂度是n*logn*logn #include <cstdio> #include <cstring> #include <algorithm&...原创 2019-03-02 14:08:30 · 273 阅读 · 0 评论 -
Couleur ZOJ - 4053
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4053 已知一个区间的逆序数 将其分成两子区间后 分别求出两子区间的逆序数 可以想到只暴力求其中一边 根据贡献算出另一边 但是如果划分的位置正好是1 2 ... n可能退化为n^2 但是可以每次只暴力相对较小的那个区间 这样在最坏情况下也是logn的 后来知道这么搞叫启发式...原创 2018-10-29 15:54:01 · 200 阅读 · 0 评论 -
明辨是非 51Nod - 1515
https://www.51nod.com/Challenge/Problem.html#!#problemId=1515 注意这题跟种类并查集不沾边 因为a!=b&&b!=c推不出a==c 对于每个集合u 把所有与u不等的集合v1 v2...都存入一个vector 在合并u与v时 对其中vector元素较少的一个进行遍历 判断是否包含另一个集合 即启发式合并 #in...原创 2019-03-02 15:02:52 · 250 阅读 · 0 评论