嘛,这个东西比较妙(其实一开始这个idea不是我想的,是Limit老哥想的。。。。)
然后我也没怎么思考,就全部丢给他了
嘛,其实思想很简单。。。。。。你考虑一下等差数列的本质是什么。。。。
你用一个线段树维护一个序列
a
1
∗
1
,
a
2
∗
2
,
a
3
∗
3....
a
n
∗
n
a1 * 1 ,a2*2,a3*3....an*n
a1∗1,a2∗2,a3∗3....an∗n
然后你就可以发现,你的区间加,就是等差数列的区间加
然后就没了。。。。
那如果是等比数列呢。。。。(每次加一个区间等比数列)
容易发现,两个等比数列放在一起是不容易的。。。
于是考虑不让等比数列相遇就行了。。。。
就每次将要遇见的时候就push——down
pushdown直接等比数列前n项和维护就好了
还是比较妙的。。。。。
具体差不多长这样
https://blog.csdn.net/ooB0Boo/article/details/99676250