想法来源于这篇题解
https://www.cnblogs.com/registergen/p/cfgym103069g_solution.html
我想用这篇题解的思想来解决P3246 [HNOI2016] 序列。
代码思路如下:
先用单调栈预处理出L数组(L[i]表示左侧第一个严格小于a[i]的元素的下标),然后离线处理查询。考虑当右端点为i时,左端点在[L[i]+1,i]的区间的贡献会变为a[i],然后先更改贡献再求维护历史和。
大致代码贴楼下了。但我写不出复杂度正确的pushdown函数,直接暴力下传标记了。