CF2158C.Annoying Game
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定两个长度为 n 的整数数组 a 和 b,以及总操作轮数 k。
Alice 和 Bob 一起玩一个游戏,轮流对数组 a 进行修改。Alice 先手。游戏共进行 k 轮。
在每轮中,当前玩家必须选择一个索引 i(1≤i≤n),并执行以下操作之一:
- 加法:将 ai 增加 bi,即令 ai:=ai+bi;
- 减法:将 ai 减少 bi,即令 ai:=ai−bi。
第 k 轮结束后,最终得分定义为修改后数组 a 的最大非空子数组和。Alice 的目标是最大化最终得分,而 Bob 的目标是最小化最终得分。
假设双方都采取最优策略,请你计算最终得分。
数组 a 的最大非空子数组和定义为 max1≤i≤j≤nS(i,j),其中 S(i,j)=ai+ai+1+⋯+aj。注意,不考虑空子数组。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 t(1≤t≤104)表示测试用例个数。
每个测试用例第一行包含两个整数 n 和 k(1≤n≤2⋅105,1≤k≤2⋅105)——数组的长度和总的操作轮数。
第二行包含 n 个整数 a1,a2,…,an(−109≤ai≤109),表示数组 a 的元素。
第三行包含 n 个整数 b1,b2,…,bn(0≤bi≤109),表示数组 b 的元素。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
每个测试用例输出一行一个整数,表示在 k 轮操作结束后,双方最优博弈下的最终得分。
输入输出样例
输入#1
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
输出#1
11 41 9 3 -1
说明/提示
对于第一个测试用例:
- 所有 b 中的元素均为零,因此无论如何操作数组 a 都不会变化。
- 最终数组的最大非空子数组和为 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 将 b2=11 从 a2 中减去。数组 a 变为 [2,−7,3]。
- 最终数组最大非空子数组和为 3。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?