#753. 范围操作

    ID: 753 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 4 上传者: 标签>基础算法前缀和枚举贪心思维数学

范围操作

题目描述

给定一个长度为 nn 的整数数组 aa。 可以执行以下一次操作(也可以不执行任何操作):

  • 选择一个区间 [l,r][l,r]1lrn1\le l\le r\le n),将区间内所有元素 al,al+1,,ara_l,a_{l+1},\dots,a_r 的值全部替换为 (l+r)(l+r)

你的任务是:在最多执行一次上述操作的前提下,计算数组元素和能达到的最大可能值。

输入格式

  • 第一行包含一个整数 tt,表示测试用例的个数(1t1041\le t\le 10^4)。

  • 对于每个测试用例:

    • 第一行包含一个整数 nn,表示数组长度(1n21051\le n\le 2\cdot 10^5)。
    • 第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n,表示数组元素(0ai2n0\le a_i\le 2n)。

额外约束:所有测试用例中 n2105\sum n \le 2\cdot 10^5

输出格式

对于每个测试用例,输出一行,包含一个整数——在最多执行一次操作的情况下,数组总和的最大可能值。

样例输入

4
3
2 5 1
2
4 4
4
1 3 2 1
5
3 2 0 9 10

样例输出

13
8
20
32

说明

样例解释

  • 第一个样例:对区间 [3,3][3,3] 进行替换,l+r=6l+r=6,数组变为 [2,5,6][2,5,6],和为 1313
  • 第二个样例:不进行操作时已为最优,总和为 88
  • 第三个样例:对区间 [1,4][1,4] 进行替换,l+r=5l+r=5,数组变为 [5,5,5,5][5,5,5,5],和为 2020
  • 第四个样例:对区间 [2,3][2,3] 进行替换,l+r=5l+r=5,数组变为 [3,5,5,9,10][3,5,5,9,10],和为 3232