题意:
给出一个序列,找到一个循环序列使得他们的和最大。
把每段连续的奇偶分段找出每一段的最大值相加即可。
AC代码:
const int N = 2e5 + 10;
int n, m, x;
ll ans, sum, res;
int a[N];
int main()
{
int t;
sd(t);
while (t--)
{
sd(n);
rep(i, 1, n)
sd(a[i]);
ans = 0;
rep(i, 1, n)
{
x = a[i];
i++;
while (i <= n && ((x < 0 && a[i] < 0) || (x > 0 && a[i] > 0)))
{
x = max(x, a[i]);
i++;
}
ans += x;
i--;
}
pld(ans);
}
return 0;
}