0%

OI线段树

做了几题思维难度并不算太高的线段树题目,难点就是有巨巨巨多细节要注意.

luoguP6327:https://www.luogu.com.cn/problem/P6327

题意:每次修改一个点,求区间sin值的和
区间sin和的信息不可加,但可以考虑和差化积公式,

同时记录cos和sin值就可以转化为线段树求和.
由于节点的tag不能直接和子节点的和相加,需要注意每次询问时先下放标签.还有浮点运算的常数极大,下放时先判一下0,不然很容易tle.

luoguP1471:https://www.luogu.com.cn/problem/P1471

题意:每次修改一个点,求区间平均数和方差
首先是平均数的合并$a_3=(a_1n_1+a_2n_2)/(n_1+n_2)$
再考虑方差的更改,每次修改时可以$O(1)$的更新

最后是方差的合并

最后特别要注意在合并方差时跨中点情况的判断,左右两段的长度应该取min(当前区间长度,询问区间长度)