CF2140C.Ultimate Value
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
我们定义一个函数 f(a),对于长度为 n 的数组 a,有:
f(a)=cost+(a1−a2+a3−a4⋯an)
其中,cost 初始为零。
现在,Alice 和 Bob 得到一个长度为 n 的数组 a。他们轮流进行游戏,最多可以进行 10100 轮,Alice 先手。
在每一轮中,他们必须执行以下操作中的一种(仅可执行一种):
- 终止游戏(对 Alice 和 Bob 都终止)。
- 选择两个下标 l,r,满足 1≤l≤r≤n,交换 al 和 ar 的值;这会令 cost 增加 (r−l)。
假设 Alice 总是试图最大化 f(a),而 Bob 试图最小化 f(a)。
你的任务是,假设双方都采取最优策略时,输出最后的 f(a)。
输入格式
每个测试点包含多组测试数据。第一行为测试用例数 t(1≤t≤104)。接下来的每组测试数据格式如下:
每组的第一行为一个整数 n(1≤n≤2⋅105),表示数组 a 的长度。
第二行为 n 个整数 a1,a2,a3,…,an(1≤ai≤109),表示数组 a 的元素。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一行,一个整数,表示在最优对抗下最终的 f(a)。
输入输出样例
输入#1
5 2 1000 1 5 9 9 9 9 9 4 7 1 8 4 6 1 14 1 14 1 15 9 31 12 14 22 89 6 78 25 91
输出#1
999 13 12 -7 265
说明/提示
对于第一个测试用例,Alice 在自己的第一步就选择终止游戏是最优策略。
此时 cost=0,f(a)=0+1000−1=999。
对于第四个测试用例,Alice 选择交换 a1 和 a6,Bob 此后选择终止游戏是最优策略。
所以最终 cost=5,f(a)=5+15−14+1−14+1−1=−7。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?