P7402-COCI-2020-2021-5-Sjeckanje
题意
给出 \(a_{1, \ldots,n}\),\(Q\) 次操作每一次给出 \(l,r,x\) 将 \(a_{i\in \{ l, \ldots,r \}}\) 加上 \(x\)。求出每一次操作后将 \(a\) 拆分为若干个区间,定义价值为所有区间的极差之和,求最大价值。
\(n,q\le 2\times 10^5,-10^8\le a_i,x\le 10^8\)
思路
考虑每一个序列划分的区间都应该满足单调性,否则的话对答案没有贡献那么放到下一个区间一定不会使答案变得更劣。单调性考虑差分,那么也就是要求差分数组在一个区间里同号,那么对于选择的一个区间,我们得到的价值是 \(\sum_{i=l+1}^r \left| d_i\right|\)。然后如果选择的区间是 \([l,r],[r+1,q]\),也就是说相当于刨掉了 \(d_{r+1}\) 这个点的贡献。
又有区间操作,于是我们考虑线段树维护。对于两个区间,我们考虑它是否刨掉左右两个端点 \(4\) 种状态分析求最大值。
对于两个同号的子区间不需要刨可以直接合并,剩下的就看是刨左区间的右端点好还是右区间的左端点好即可。

浙公网安备 33010602011771号