根号分治学习笔记
yizcdl2357 · · 个人记录
1. 什么是根号分治
如同动态规划,根号分治不是一种算法,是一种思想。
能够根号分治的题目的特征是:
- 能够根据某一个值(设为
a )的数据范围,将原问题分为大问题(a\ge B )和小问题(a<B )。 - 小问题通常可能的情况不多,可以维护所有可能答案或用离线算法求解,通常时间复杂度为
O(a) 。 - 大问题可以用暴力求解,通常时间复杂度为
O(n/a) 。
此时算法时间复杂度为
因此,根号分治本质上是两个针对不同数据规模的暴力。
例:哈希冲突
取
对于小问题,可能的小问题只有
维护一个二维数组
修改时暴力维护
对于大问题,注意到当
习题:Time to Raid Cowavans
提示:
- 这题卡空间,不建议使用
O(n^{1.5}) 的空间复杂度。 - 这题没有修改操作,可以使用离线算法。
2. 一般分析过程
待更新。
3. 例题选讲
待更新。