随笔分类 -  Algorithm --- 点分治

摘要:"题面" 题解 考虑最小化$dis(x, y)$ 这里需要对一种奇怪的最小生成树算法:Boruvka算法有深刻的理解。 考虑该算法的执行过程,我们可以考虑进行点分治,每次找到离分治重心最近的点,然后将分治重心的所有子树的点全部向这个点连边,边数是$\mathrm{O}($子树大小$)$的,所以总边数 阅读全文
posted @ 2019-03-01 17:27 xgzc 阅读(192) 评论(5) 推荐(1)
摘要:"题面" 题解 树链剖分 + 主席树 先考虑一个简单一点的问题: "【LNOI2014】LCA" 我们考察$dep[\mathrm{LCA}(i, x)]$的性质,发现它是$i$和$x$的链交的长度。 那么对每个$i$所在的链打一个区间加标记,询问时算一下$x$所在的链的区间和即可。 如果有$l \ 阅读全文
posted @ 2019-02-22 08:35 xgzc 阅读(230) 评论(2) 推荐(0)
摘要:"题面" 题解 强行将最短路和点分治~~(长链剖分)~~融合在一起的题目 构建出字典序最小的最短路树之后,就可以用点分治来解决了 不过有一些细节要注意: 这样建出的最短路树是$1 2 3$ 而不是$1 2,1 3$ ~~相信这组美妙的数据可以帮助你调错~~ "再来一组数据" 这组$hack$数据的核 阅读全文
posted @ 2019-01-17 08:38 xgzc 阅读(236) 评论(0) 推荐(0)
摘要:题面 题解 点分治大火题。。。 设白边数量为$a$,黑边为$b$,则$2min(a,b)\geq max(a,b)$ 即$2a\geq b\;\&\&2b\geq a$ 考虑点分治时如何统计答案: $2(a_1 +a_2) \geq b_1 + b_2$ $\therefore 2a_1-b_1\g 阅读全文
posted @ 2018-12-24 11:16 xgzc 阅读(247) 评论(1) 推荐(0)
摘要:题面 题解 树上求点对数目的题大多都是点分治解决 路径统计中有一个问题,如果现在求出从上到下的链长$a$,从下到上的链长$b$和深度$c$, 则: $ a \times10^c + b\equiv0(mod\;m) $ 两边同除以$c$,得 $ a + b\times10^{-c}\equiv0(m 阅读全文
posted @ 2018-12-22 15:51 xgzc 阅读(454) 评论(0) 推荐(0)
摘要:"题面" 题解 感觉和$CDQ$分治一样套路啊 首先,构建出点分树 对于每一层分治重心,求出它到子树中任意点的距离 然后$two pointers$计算满足小于等于$K$的点对数目,加入答案 但是可能会算重,那么就减去子树内两两点之间的贡献即可。 代码 cpp include include inc 阅读全文
posted @ 2018-10-20 22:46 xgzc 阅读(156) 评论(0) 推荐(0)