你说得对,但是
关于区间分治信息维护的思考。
区间 \(N\),标记 \(T\),信息 \(D\)。
区间合并:\(N_0=N_1+N_2\)。
标记作用在区间上:\(N_0=N_0\times T\)。称为 \(apply(T\rightarrow N_0)\)。
从区间到信息的函数:\(f(N)=D\)。
标记的复合:\(T=T_0\times T_1\)。称为 \(compose(T_0,T_1)\)。
区间分治信息维护最暴力的做法就是 \(apply\) 和 \(f\)。
apply 是将题目的标记作用在区间上,f 是得到区间的某些信息。
我们考虑这么一种结构,将标记作用在信息上而非区间上,来降低复杂度。
即:\(apply(T\rightarrow D)\)。
考虑线段树这种结构需要满足什么。
- 区间复合的得到的信息等于信息的复合(f 对区间有分配律)
\(f(N=N_0+N_1)=f(N_0)+f(N_1)\)
例如,线段树 1 中的 f 即代表区间和,信息的复合方式为相加。
- 区间、信息、标记的合并都有结合律
区间显然有结合律。
信息的结合律:\(f(N=N_0+N_1+N_2)=f(N_0)+f(N_1)+f(N_2)=f(N_0)+(f(N_1)+f(N_2))\)。
标记的结合律?\(T_0T_1T_2=T_0(T_1T_2)\)。
标记的交换律并不是必要的。
- 标记对信息和区间都要有分配律
\(T(N_0+N_1)=TN_0+TN_1\)。
-
存在单位元标记 \(\omega\)。
-
对区间应用标记得到的信息等于对信息应用标记
这是区间分治信息维护能降低复杂度最重要的一点。
\(f(TN)=Tf(N)\)。
- 标记的复合是封闭的
区间分治信息维护的题目一般需要设计标记、标记的复合、信息的复合、标记对信息的应用。