ABC407 F - Sums of Sliding Window Maximum 题解
huangyuze01 · · 题解
ABC407 F - Sums of Sliding Window Maximum
如果直接计算,即使使用单调队列也需
容易发现,记
此时有一个细节需要注意:相同的数可能会多贡献或者漏贡献。此时只需稍加修改,计算
接下来我们考虑是怎样贡献的。
手玩几组数据可以发现,记
- 对于
i\in[1,pos], ans_i = ans_i + i \times A_i - 对于
i\in[pos+1,len-pos], ans_i = ans_i + (pos+1) \times A_i - 对于
i\in[len-pos+1,len], ans_i = ans_i + (len-i+1) \times A_i
对于
- 记
C_i = ans_i-ans_{i-1} ,则只需维护C 的区间加操作,时间复杂度O(n \times \log n) - 又记
D_i = C_i-C_{i-1} ,二次差分,则只需对D 进行单点修改,最后二次前缀和即可,时间复杂度O(n)
这里给出个数据:
代码自己写