题目大概是这样的:
- 给出一个长度为 n n n的序列, m m m次询问, q q q为参数,有两种操作
- 给区间 ∀ i ∈ [ l , r ] {\forall}i\in[l,r] ∀i∈[l,r]的数字加上 q i − l q^{i-l} qi−l
- 询问区间 [ l , r ] [l,r] [l,r]的数字和
- n , m < = 1 0 5 , 1 < q < = 1 0 9 n,m<=10^5,1<q<=10^9 n,m<=105,1<q<=109
分析:
既然题目说 q > 1 q>1 q>1,那么就可以用等比数列求和公式来计算加了多少了,而且对于所有的操作,q都是一致的,那么懒标记可以记录这段区间的要加的等比数列的首项就可以!
下传标记的时候注意左子树可以直接加过来,因为他们的首项相同,右子树就需要补上 q m i d + 1 − l q^{mid+1-l} qmid+1−l</