首先发现对于一个询问 \([l,r]\),我们如果直接去做是很难做的。但是我们发现这个位置它一定是满足结合律的,因为 \(L,R\) 不会发生变化。于是对于区间满足结合律的问题我们都可以考虑线段树。我们考虑定义 \(F_{[l,r]}(x)=f_r(f_{r-1}(\cdots f_l(x)))\),那么我们就要维护这个的分段函数。于是对于线段树的每一个节点,我们维护若干个二元组 \((v_i,c_i)\) 表示 \(\forall x\in[v_i,v_{i+1}-1],F_{[l,r]}(x)=x+c_i\)。对于叶子节点我们就存 \((L_i,1),(R_i+1,0)\)。那么我们来分析一下这么做的时间复杂度。由于对于区间 \([l,r]\),我们也至多有 \(2(r-l+1)\) 个分界点,于是每一个节点也只有长度级别的分段函数数量要存。所以空间 \(O(n\log n)\),时间 \(O(Q\log^2n)\)。
那么我们考虑对于两个节点如何合并。发现我们只需要先归并到一起,之后按照类括号匹配的方法进行合并即可。