为什么可以使用前缀和,这里提供解释:
初读题目,我们发现这个数列很迷惑,似乎不能使用数学方法来解。
但是,我们可以想到 数形结合 的方式,我们将数列看作一个三角形,于是他变成了:
\[1 \]\[1,2 \]\[1,2,3 \]\[1,2,3,4 \]\[\cdots\cdots \]于是本题变得好思考了些:我们只要记录每一行的总和,再记录到数列第 \(n\) 项的前缀和,然后在每次输入 \(l,r\) 时,答案便等于数 \(r\) 所在的行最后一个数位置的前缀和,减去数 \(r\) 所在行的位于 \(r\) 后面的数的总和,减去 \(l,r\) 两数所在行之间所有行的和,再减去数 \(l\) 所在行的位于 \(l\) 之前的所有数的和。
使用 tmp * (tmp + 1) / 2
的方式来估计行,最后再进行前缀和相减。