[ABC037C] 総和 题解

注意到暴力是 O(n2)O(n^2) 级别,某岛国时间限制 2s2s,可以过去,但明显不是正解。

题解区有暴力,还有尺取法,但我认为这其实是算贡献模板。题解区唯一算贡献的题解没有给证明,而且容易写错,这篇题解将会更加简单。

考虑每个数字的计算次数,可以枚举开始节点,然后逐一修改,但这与暴力的复杂度是一样的,可以考虑用差分优化,即:

for(int i = 1; i <= n - k + 1; i ++){
        c[i] ++; c[i + k] --;
    }

用前缀和得出最终次数:

for(int i = 1; i <= n; i ++) c[i] += c[i - 1];

计算相乘即可。

AC submissions

posted on 2024-12-19 22:20  zhangzirui66  阅读(13)  评论(0)    收藏  举报  来源

导航