#CF2084G1. 许愿卫星(简单版
许愿卫星(简单版
G1. 许愿卫星(简单版)
时间限制:每个测试点 4 秒
内存限制:512 兆字节
题目描述
这是该问题的简单版本。与困难版本的区别在于,本版本中 ,,且所有测试用例的 之和不超过 。只有解决了所有版本的用户才能进行 Hack。
对于一个非空序列 ,长度为 ,定义 如下:
Turtle 和 Piggy 在序列上玩游戏。他们拿到序列 ,Turtle 先手。Turtle 和 Piggy 轮流操作(Turtle 先,然后 Piggy,然后 Turtle,依此类推)。
游戏过程如下:
- 设当前序列长度为 。如果 ,游戏结束。
- 如果游戏未结束,且轮到 Turtle 操作,则 Turtle 必须选择一个整数 满足 ,令 ,并删除 。
- 如果游戏未结束,且轮到 Piggy 操作,则 Piggy 必须选择一个整数 满足 ,令 ,并删除 。
Turtle 希望最终 的值尽可能大,Piggy 希望最终 的值尽可能小。
为双方都采取最优策略时,游戏结束时 的值。
对于一个长度为 的排列 ,Turtle 定义排列的美丽值为:
$$\sum_{i=1}^{n} \sum_{j=i}^{n} f([p_i, p_{i+1}, \dots, p_j]) $$即所有非空子段的 值之和。
Piggy 给 Turtle 一个长度为 的排列 ,其中部分元素缺失,用 表示。
Turtle 希望确定一个长度为 的排列 ,满足:
- 可以通过填充 的缺失元素得到(即对所有 ,若 ,则 )。
- 排列 的美丽值最大。
你只需要求出这个最大的美丽值。
注:
- 长度为 的排列是由 到 的 个不同整数组成的数组,顺序任意。例如 是一个排列,但 不是( 出现两次), 也不是( 却有 )。
- 子段是指原序列中连续的一段(通过删除开头和结尾若干元素得到)。
输入格式
每个测试文件包含多个测试用例。
第一行包含一个整数 (),表示测试用例的数量。
接下来每个测试用例:
- 第一行包含一个整数 ()。
- 第二行包含 个整数 ()。保证 中不为 的元素互不相同。
所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数 —— 最大的美丽值。
示例
输入
8
2
1 0
3
0 0 0
3
0 1 0
5
3 2 4 5 1
7
0 3 2 5 0 0 0
10
1 2 6 5 8 9 0 0 0 0
5
0 4 1 0 0
5
0 1 5 2 3
输出
4
12
11
44
110
300
45
40
样例解释
-
第一个测试用例:美丽值最大的排列是 。其美丽值为: 。
对于 ,,因为 Turtle 只能选 ,他会让 。 -
第二个测试用例:一个最优排列是 ,美丽值为 : $f([3]) + f([2]) + f([1]) + f([3,2]) + f([2,1]) + f([3,2,1]) = 3 + 2 + 1 + 2 + 1 + 3 = 12$。
-
第三个测试用例:一个最优排列是 。
-
第四个测试用例:若 ,则 ,过程示例见原题。
-
第五个测试用例:一个最优排列是 。