编程题
### 问题描述 Alice 拥有一批货物,数量为 $n$,货物的价值用数组 $a$ 来表示,第 $i$ 个货物的价值为 $a_i$。现在 Alice 想要出售这批货物,出售价格为所有货物的价值总和。 在 Alice 刚要出手之际,她被魔法师 Bob 阻止了。Bob 表示他有一个魔法,能够提升货物的售价。 假设一批货物价值用数组 $c$ 来表示,经由 Bob 的魔法会变成数组 $b$,具体规则如下: $$ \begin{cases} b_i = c_i, i=1 \\\\ b_i = max(b_{i-1}, c_i), i > 1 \end{cases} $$ 但是 Bob 并不能白白为 Alice 施展魔法,所以他向 Alice 提出了一个问题作为考验:对于 $a$ 的所有子数组,经由 Bob 施展魔法后的出售价格总和是多少。由于数量实在太大,你只需要告诉 Bob 答案对 $1000000007$ 取模的结果。 $a$ 的子数组是 $a$ 的一段连续部分,对于所有的 $1 \le i \le j \le n$,$a_i,a_{i+1},...,a_j$ 是 $a$ 的子数组。 Alice 无法解决这道问题,你能帮帮她吗? ### 输入格式 第 $1$ 行输入一个整数 $n$,表示 Alice 货物的数量。 第 $2$ 行输入 $n$ 个整数,第 $i$ 个整数代表第 $i$ 个货物的价值 $a_i$。 ### 输出格式 输出一行,这一行只包含一个整数,表示 $a$ 的所有子数组经由 Bob 施展魔法后的出售价格总和对 $1000000007$ 取模的结果。 ### 样例输入 ``` 3 3 7 5 ``` ### 样例输出 ``` 56 ``` ### 样例说明 样例的子数组以及对应 $b$ 数组情况如下: $3$ 的 $b$ 数组为 $3$。贡献为 $3$。 $7$ 的 $b$ 数组为 $7$。贡献为 $7$。 $5$ 的 $b$ 数组为 $5$。贡献为 $5$。 $3,7$ 的 $b$ 数组为 $3,7$。贡献为 $10$。 $7,5$ 的 $b$ 数组为 $7,7$。贡献为 $14$。 $3,7,5$ 的 $b$ 数组为 $3,7,7$。贡献为 $17$。 结果为 $(3+7+5+10+14+17) \space mod \space 1000000007 =56$。 ### 数据范围 对于 $50\\%$ 的评测数据,$1 \le n \le 500$,$1 \le a_i \le 10^9$。 对于所有评测数据,$1 \le n \le 10^5$,$1 \le a_i \le 10^9$。
查看答案
赣ICP备20007335号-2