#P4497. [WC2011] 拼点游戏
[WC2011] 拼点游戏
题目描述
小 W 和小 Y 都很喜欢玩一种“拼点游戏”。游戏中两个人分别通过某种操作产生一个数作为自己的“点数”,点数大的一方获胜。“拼点游戏”的规则如下:
- 游戏开始时,给定一个包含 个元素的正整数序列 。
- 定义 的一个下标序列 是满足 的一个整数序列( 可以为 0 ,即序列可以为空),并且其对应 的子序列为 。
- 定义下标序列 对应的点数 为: 。
- 进行游戏时两人分别选择一个下标序列,谁选择的下标序列对应的点数 大,谁就获胜。
然而在每次游戏中,小 W 总是能准确无误的算出点数最大的最优下标序列。为了让游戏更加具有竞技性,他们制定了下列额外规则:
Ex1. 小W可以选择一个非空区间 ,并将 同时增加一个整数 ,产生的新序列将取代原序列 。
Ex2. 当他们对于当前的 序列进行一次“拼点游戏”时,允许小 Y 在小 W 选出最优下标序列 之后,对 进行任意次修改操作。每次修改操作规则如下:
(1)任意选择一个正整数k满足݉ ,以及两个非负整数 满足 ;
(2)将 修改为 ,将 修改为 。
若小 W 选出的下标序列 经过小 Y 若干次修改操作之后所对应的点数小于等于 ,则小 Y 获胜。
现在给出小 W 所进行的 Ex1 操作的信息,请你对于每一次“拼点游戏” ,帮助他们计算:
a)小 W 一开始所能选出的最优下标序列对应的点数是多少?
b)小 Y 最少需要进行几次修改操作才能获胜?即使得 。
输入格式
输入文件 joy.in 的第一行包含一个正整数 ,表示测试数据的组数。接下来为 组数据。
每一组数据的第一行包含两个整数 和 ,分别表示 中的元素个数和事件个数。
接下来的一行,包含 个 用一个空格隔开的正整数,第 个整数为初始的序列中第 个元素 。
接下来 行,每行代表一个事件(按事件发生顺序输入)。每行的第一个数非 即 ,表示这个事件的类型。
若为 :在 之后还有三个整数 , 和 (这四个数之间均有一个空格)表示小 W 将 增加 ;
若为 :表示两人进行了一次“拼点游戏”,你需要输出相应的结果。
输入数据保证序列 中的所有元素总是正整数。
输出格式
输出文件为joy.out。对于每一组测试数据,依次对每一次“拼点游戏”输出一行包含两个由一个空格隔开的整数 和 ,其中
为对于当前序列 ,小 W 所能选出的最优下标序列所对应的点数;
表示小 Y 最少需要进行几次修改操作才能获胜。如果小 Y 不论多少次操作都无法获胜,则输出-1
。
数据保证最优下标序列总是唯一的。
2
5 9
9 10 7 6 8
1
0 4 5 2
0 3 5 4
1
0 2 5 -2
0 3 5 -3
0 4 5 -2
0 5 5 -4
1
4 3
2 4 3 5
1
0 3 3 3
1
3 1
5 -1
0 0
4 -1
4 -1
提示
【评分标准】
一个测试点包含多组测试数据,对于该测试点:
如果所有的 均正确但某个 不正确,则可以得到3分;
如果所有的 均正确但某个 不正确,则可以得到7分;
如果所有回答均正确,则可以得到 10 分。
【样例说明】
输入数据包含两组测试数据。
在第一组测试数据中:第一次“拼点游戏”时,最优下标序列为 ,小 Y 只需要进行一次修改操作:选择 ,以及非负整数 。这样经过修改操作之后下标序列将变为 ,小 Y 获胜。
第三次“拼点游戏”时,序列 为 ,小 W 所选择的最优下标序列为空序列,所产生的点数为 。在这种情况下,小 Y 无法进行任何修改操作(也无需进行任何修改操作),此时小 Y 已经直接获胜。
【数据规模】
对于 10% 的数据满足 ;
对于 30% 的数据满足 ;
对于另外 20% 的数据满足 且 ;
对于 100% 的数据满足 且 ,同时初始序列 满足 ,。