A31323.摇摇晃摇
入门
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给你一个由 n 个整数 a1,a2,…,an 组成的数组。这些整数不是 1 就是 −1 。你必须对数组 a 执行一次以下操作:
- 选择一个索引 i ( 1≤i≤n ),然后翻转 ai 和 ai+1 的符号。翻转符号会将数值从−1 变为 1 或者将 1 变为 −1 。
进行上述运算后, a1+a2+…+an 的最大值是多少?
输入格式
每个测试包含多个测试用例。第一行包含测试用例的数量 t ( 1≤t≤500 )。测试用例说明如下。
每个测试用例的第一行包含一个整数 n ( 2≤n≤105 ),即数组的长度 a 。
下一行包含 n 个整数 a1,a2,…,an ( ai=1 或 ai=−1 )。
所有情况下 n 的总和不超过 105 。
输出格式
对于每个测试用例,单独一行打印数组 a 的最大总和。
输入输出样例
输入#1
4 5 -1 1 1 -1 -1 5 1 1 -1 -1 -1 2 1 1 4 1 -1 -1 1
输出#1
3 3 -2 4
说明/提示
在第一种情况下,我们可以选择索引 4 ,然后翻转 a4 和 a5 的符号。操作完成后,总和为 −1+1+1+1+1=3 。
在第三种情况下,我们只能选择索引 1 。