CF2064C.Remove the Ends
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有一个长度为 n 的数组 a,其中元素均为非零整数。初始时你有 0 枚硬币,你将重复以下操作直到 a 变为空:
- 设当前数组 a 的大小为 m。选择一个整数 i(1≤i≤m),获得 ∣ai∣ ∗ 枚硬币,然后:
- 如果 ai<0,则将 a 替换为 [a1,a2,…,ai−1](即删除从 ai 开始的后缀);
- 否则,将 a 替换为 [ai+1,ai+2,…,am](即删除以 ai 结尾的前缀)。
请计算最终你能获得的最大硬币数量。
∗ 此处 ∣ai∣ 表示 ai 的绝对值:当 ai>0 时等于 ai,当 ai<0 时等于 −ai。
输入格式
第一行包含一个整数 t(1≤t≤104)——测试用例数量。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)——数组 a 的长度。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(−109≤ai≤109,ai=0)。
所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,输出最终能获得的最大硬币数量。
输入输出样例
输入#1
3 6 3 1 4 -1 -5 -9 6 -10 -3 -17 1 19 20 1 1
输出#1
23 40 1
说明/提示
第一个测试用例中获得 23 枚硬币的操作示例:
- a=[3,1,4,−1,−5,-9]i=6a=[3,1,4,−1,−5],获得 9 枚硬币。
- a=[3,1,4,−1,−5]i=1a=[1,4,−1,−5],获得 3 枚硬币。
- a=[1,4,−1,−5]i=1a=[4,−1,−5],获得 1 枚硬币。
- a=[4,−1,-5]i=3a=[4,−1],获得 5 枚硬币。
- a=[4,-1]i=2a=[4],获得 1 枚硬币。
- a=[4]i=1a=[],获得 4 枚硬币。
最终共获得 23 枚硬币。
第二个测试用例中获得 40 枚硬币的操作示例:
- a=[−10,−3,−17,1,19,20]i=4a=[19,20],获得 1 枚硬币。
- a=[19,20]i=1a=[20],获得 19 枚硬币。
- a=[20]i=1a=[],获得 20 枚硬币。
最终共获得 40 枚硬币。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?