CFCF2185B.Prefix Max
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个长度为 n 的整数数组 a1,a2,…,an。
一个数组的价值定义为其所有前缀的最大值之和。更正式地说,数组 a 的价值为 ∑i=1nmax(a1,…,ai)。例如,数组 [1,2,1] 的价值为 max(1)+max(1,2)+max(1,2,1)=1+2+2=5。
你可以选择两个下标 i 和 j,将元素 ai 与 aj 交换;该操作最多只能执行一次。
请你求出在最多进行一次交换操作后,数组 a 能够获得的最大价值。
输入格式
输入的第一行包含一个整数 t(1≤t≤100),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(2≤n≤50),表示数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤104),即数组 a。
输出格式
对于每个测试用例,输出在至多进行一次交换操作后,数组 a 能获得的最大价值。
输入输出样例
输入#1
4 5 2 1 4 5 3 2 5 1 3 3 2 1 2 6 7
输出#1
25 10 9 14
说明/提示
对于第一个测试用例,我们可以将 a1 与 a4 交换,得到数组 [5,1,4,2,3],其价值为 max(5)+max(5,1)+max(5,1,4)+max(5,1,4,2)+max(5,1,4,2,3)=25。
对于第二个测试用例,当前数组的价值为 max(5)+max(5,1)=10。如果我们交换 a1 和 a2,a 就变成了 [1,5],其价值为 max(1)+max(1,5)=6,因此最优方案是不进行任何交换操作。