还是接着分块,之前写太多了,
题意:维护一个序列,支持(在指定元素后面)插入元素,询问两个元素的先后顺序。
- 平衡树
可以暴力维护,复杂度是
或者说对于每个平衡树的每个节点钦定一个权值,每次插入的时候根据这样钦定的顺序每个点就有了一个权值,这样我们可以
但是这样对于深度的要求很高,我们用替罪羊树就行了
- 块状链表
考虑上面这个
比较元素的时候优先比较块的位置,如果在同一块内在再比较块内的位置。
块内外都用钦定权值维护,但是块的元素数量比较多,如果一直搞链就寄了,所以需要使用平衡树维护,总共有
考虑钦定块内元素的权值为前驱和后继权值的平均数。
我们一开始可以特别插入。
发现分裂总共需要
所以复杂度均摊
根号分治 & 自然根号
例 : 有若干数和为
若对于某个数可以
看到和,先想能不能根号分治。
看到图先考虑生成树和点的度数。
点的度数和是
题意:维护一个长度为
单点修改。
查询
。
考虑对于
有若干个数和为
。
有
有
如果询问记忆化,总的复杂度为
将
选择最大的
考虑对于
个复杂度不同的询问,第 个最多只能贡献 次。
最差情况
对于广义
考虑对于
对于
对于字符串的我们下个专题再说 /qd