专栏文章

根号分治

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio8us0r
此快照首次捕获于
2025/12/02 15:15
3 个月前
此快照最后确认于
2025/12/02 15:15
3 个月前
查看原文

简介

利用根号平衡的思想对问题进程分治解决。

例题

CF506D Mr. Kitayuta's Colorful Graph

依次考虑每个颜色 cc,用并查集合并,我们有两个算法。
算法 1:扫描 qq 个询问并更新,单次 O(q)O(q)
算法 2:考虑同一颜色的点对,对答案的贡献(可以用 map 存,最后在加到答案),单次 O(nc2)O(n_c^2),其中 ncn_c 是与颜色 cc 边邻接的点数,显然 nc2mcn_c \le 2m_c
算法 1 不依赖点数,但本身代价比较大,不能执行太多次;而算法 2 在点数少的时候表现比较好。
于是根号分治,在 mc<mm_c < \sqrt{m} 时使用算法 1,在 mcmm_c \ge \sqrt{m} 时使用算法 2。
算法 1 部分的最差复杂度为 O(mm)O(m\sqrt{m})。不妨设 c,mc<m\forall c, m_c < \sqrt{m},且 cmc=m\sum_c{m_c} = m,根据均值不等式,m1=m2==mm_1 = m_2 = \dots = \sqrt{m} 时,cmc2\sum_c{m_c^2} 最大,为 O(mm)O(m\sqrt{m})
算法 2 部分至多执行 mm=m\frac{m}{\sqrt{m}} = \sqrt{m} 词,故这部分复杂度为 O(qm)O(q\sqrt{m})
总复杂度 O((q+m)m)O((q + m)\sqrt{m})
这个分析没有考虑 nn 的限制(因为麻烦),实际上有更紧的下限跟 nn 有关。

评论

0 条评论,欢迎与作者交流。

正在加载评论...