题目描述
给定两个长度为 n 的整数数组 a 和 b,以及总回合数 k。
Alice 与 Bob 轮流对数组 a 进行修改,Alice 先行。游戏恰好进行 k 回合。
在某一回合,玩家必须选择一个下标 i(1≤i≤n),并对 ai 执行下列两种操作之一:
- 加法(Add):将 ai 增加 bi,即 ai:=ai+bi;
- 减法(Subtract):将 ai 减少 bi,即 ai:=ai−bi。
当第 k 回合结束时,最终得分定义为修改后数组 a 的 最大非空子数组和(即 max1≤l≤r≤n∑t=lrat,不考虑空子数组)。Alice 的目标是 最大化 最终得分,而 Bob 的目标是 最小化 最终得分。假设双方均完美博弈,请问最终得分是多少?
输入格式
第一行包含一个整数 t(1≤t≤104)——测试用例数。接下来为 t 个测试用例,每个测试用例包含三行:
- 第一行:两个整数 n 和 k(1≤n≤2⋅105,1≤k≤2⋅105);
- 第二行:n 个整数 a1,a2,…,an,满足 −109≤ai≤109;
- 第三行:n 个整数 b1,b2,…,bn,满足 0≤bi≤109。
额外保证:所有测试用例中 ∑n≤2⋅105。
输出格式
对每个测试用例,输出一行,包含一个整数——在双方最优对抗下,经过 k 回合后的最终得分(即最大非空子数组和)。
样例输入
5
5 200000
3 -1 9 -5 4
0 0 0 0 0
4 5
10 10 10 10
1 1 1 1
3 1
2 -7 3
1 11 3
3 2
2 -7 3
1 11 3
1 1
-3
2
样例输出
11
41
9
3
-1
说明
样例解释
对于第一个测试用例:
- 任何移动都无法更改数组 a ,因为 b 中的所有元素均为零。
- 最终数组的最大非空子数组和为 3+(−1)+9=11 。
对于第二个测试用例,可能的最佳移动顺序之一是:
Alice 将 b3=1 添加到 a3 。数组 a 变为 [10,10,11,10] 。
Bob 从 a1 中减去 b1=1 。数组 a 变为 [9,10,11,10] 。
Alice 将 b3=1 添加到 a3 。数组 a 变为 [9,10,12,10] 。
Bob 从 a1 中减去 b1=1 。数组 a 变为 [8,10,12,10] 。
Alice 将 b4=1 添加到 a4 。数组 a 变为 [8,10,12,11] 。
- 最终数组的最大非空子数组和为 8+10+12+11=41 。
对于第三个测试用例,可能的最佳移动顺序之一是:
Alice 将 b2=11 添加到 a2 。数组 a 变为 [2,4,3] 。
- 最终数组的最大非空子数组和为 2+4+3=9 。
对于第四个测试用例,可能的最佳移动顺序之一是:
Alice 将 b2=11 添加到 a2 。数组 a 变为 [2,4,3] 。
Bob 从 a2 中减去 b2=11 。数组 a 变为 [2,−7,3] 。
- 最终数组的最大非空子数组和为 3 。