「JSOI2014」序列维护
2021-04-21 13:27
标签:ext sea getchar tps define temp end www stdout 传送门 然后我们就只需要写一个维护 \(ax + b\) 操作的修改就可以了。 「JSOI2014」序列维护 标签:ext sea getchar tps define temp end www stdout 原文地址:https://www.cnblogs.com/zsbzsb/p/12249903.html「JSOI2014」序列维护
其实这题就是luogu的模板线段树2,之所以要发题解就是因为被 \(\color{black}{\text{M}} \color{red}{\text{_sea}}\) 告知了一种比较NB的 \(\text{update}\) 的方式。
我们可以把修改操作统一化,视为 \(ax + b\) 的形式,然后我们按照原来的套路来维护两个标记,分别代表 \(a\) 和 \(b\) ,那么我们的更新就可以这么写:inline void f(int p, int atag, int mtag, int l, int r) {
t[p].sum = (t[p].sum * mtag % P + 1ll * atag * (r - l + 1) % P) % P;
t[p].atag = (t[p].atag * mtag + atag) % P;
t[p].mtag = t[p].mtag * mtag % P;
}
其实我们还可以发现这个东西还可以用于区间赋值 \((a = 0)\)。简直很妙有没有
参考代码:#include