序列翻转
作者:
不知名的fE
,
2025-02-19 17:17:01
·河北
,
所有人可见
,
阅读 2
翻转一段序列, 只能操作一次, 使得偶数索引的sum最大
import java.util.Scanner;
public class Main {
static final int N = 200010;
static int[] a = new int[N];
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
long sum = 0;
for (int i = 1; i <= n; i++) {
a[i] = sc.nextInt();
if (i % 2 == 1) sum += a[i];
}
long dp = 0, max = 0;
for (int i = 3; i <= n; i += 2) {
long cur = a[i - 1] - a[i];
dp = Math.max(dp + cur, cur);
max= Math.max(max, dp);
}
dp = 0;
for (int i = 1; i + 1 <= n; i += 2) {
long cur = a[i + 1] - a[i];
dp = Math.max(dp + cur, cur);
max= Math.max(max, dp);
}
System.out.println(sum + max);
}
}