来讲一个不常用(不是)但是有用的算法吧。
大纲
- 大概思路
- 例题
1.大概思路
一般这种题我们都会分为两类:
k<=sqrt(n)和k>sqrt(n)
然而我们一般是对于第一种情况预处理或者标记(反正不是直接处理),第二种情况暴力。
在这些根号分治的题目中可以使得单次复杂度不超过sqrt(n)
2.例题
luogu P3396
题目链接
给你一个长度为 n n n 的序列和 m m m 个操作,每次操作有两种类型:
- 询问下标模 x x x 后为 y y y 的所有数之和;
- 修改第 x x x 个数;
对于 10 % 10\% 10%的数据,有 n ≤ 1000 n\leq 1000 n≤1000, m ≤ 1000 m\leq 1000 m≤1000。
对于 60 % 60\% 60% 的数据,有 n ≤ 100000 n\leq 100000 n≤