塔子哥有一天拿到了一个数组a,他用这个数组构造一个新数组b,其中ai代表b数组中有ai个i。例如,若a=[2,3,1],那么b=[1,1,2,2,2,3]。 现在给定a数组,你需要帮塔子哥求出b数组中所有连续子数组的极差之和。由于答案可能过大,请对109+7取模。数组的极差指最大值减去最小值。
输入格式
考虑第i个元素对结果的贡献,选择第i个元素对结果的贡献 b[i]∗(b[i+1]∗1+b[i+2]∗2+...+b[k]∗(k−i))
如果是选择第i+1个元素,对结果的贡献为b[i+1]∗(b[i+2]∗1+b[i+3]∗2+...+b[k]∗(k−i−1))
右边的差值其实就是b[i+1]+b[i+2]+...+b[k]
因此可以预处理一个后缀和数组来去一遍遍历,一遍计算,当然,也可以不使用后缀和数组,维护两个变量即可