P7446 [Ynoi2007] rfplca
可以用分块维护,记 $ b_i $ 表示这个块中第一个 \(a_i\) 不在块中的值
区间修改:
对于散块,直接暴力重构
对于整块,发现 \(b_i\) 所属点最多只会改变 \(\sqrt n\) 次,所以也暴力重构
查询:
考虑像倍增一样的过程,先把后面那个点的 \(b_i\) 一直往前跳,直到 \(b_i\) 在另一个点前面,接着两个点一起跳,直到 \(b_i\) 相同,接着在块内跳,直到相同即可
可以用分块维护,记 $ b_i $ 表示这个块中第一个 \(a_i\) 不在块中的值
区间修改:
对于散块,直接暴力重构
对于整块,发现 \(b_i\) 所属点最多只会改变 \(\sqrt n\) 次,所以也暴力重构
查询:
考虑像倍增一样的过程,先把后面那个点的 \(b_i\) 一直往前跳,直到 \(b_i\) 在另一个点前面,接着两个点一起跳,直到 \(b_i\) 相同,接着在块内跳,直到相同即可