UnfairSugoroku

[ABC288D] Range Add Query

这道题考察了一个很重要的知识点:不变量

关于不变量的介绍,就在本题官方题解

不变量是指在操作或转换中不改变的性质。如果能找到适当的不变量,有时可以非常简单地解决问题。(找到不变量的问题很难,需要练习。)

这是官方的定义,我觉得非常有道理。

本题中,我们 将满足 \(i \bmod K = j\)\(X_i\) 的总和称为 \(S_j\),则每连续 \(K\) 个数的 \(+c\),必定会修改所有的 \(S\),所以可以保证对于每个 \(j(1\le j \le K-1)\),都有 \(S_0-S_j\) 不变。它就是不变量。

由于最后变为 \(0\),所以 \(S_0=S_1=S_2=\dots=S_{K-1}=0\),而根据上述结论可以轻松得到初始时的状态是 \(S_0=S_1=S_2=\dots=S_{K-1}\)。判断这个很简单,使用前缀和即可。

code

代码中的前缀和不包括右边界。

posted @ 2023-06-19 22:03  wscqwq  阅读(11)  评论(0编辑  收藏  举报