贪心 + 矩阵快速幂.
- 显然可以贪心,每次取最大的两个数加起来.答案为初始所有元素之和加上每次操作加入的数.
- 记初始时最大数为 $a$ ,次大数为 $b$ ,因为题目保证答案非负,所以 $a,b$ 不可能都为负.
- 若 $a,b$ 都非负,那么加入的数就是一个类斐波那契数列,用矩阵快速幂加速计算就可以了.
- 若 $a>0$ , $b<0$ ,那么就先算出最少要加几次能使得有两个非负数.只要 $k$ 不为 $0$ ,又保证最终答案为非负,那么一定能在 $k$ 次之内得到两个非负数.
- 这部分贡献可以直接算出,然后再对剩余次数计算类斐波那契数列部分的贡献即可.
记得答案 $+$ 模数后再输出.
1 |
|