对于100%的数据,1<=n<=10000000,1<=Ai<=100
分析
设f[0,i]表示当前这一位是减ai的最大值,得f[0,i]:=max(f[0,i-1],f[1,i-1]-a[i]);
设f[1,i]表示当前这一位是加ai的最大值,得f[1,i]:=max(f[1,i-1],f[0,i-1]+a[i]);
最后输出max(f[0,n],f[1,n])
程序:
uses math;
var
n,i:longint;
a:array[0..10000000]of longint;
f:array[0..1,0..10000000]of longint;
begin
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
begin
f[0,i]:=max(f[0,i-1],f[1,i-1]-a[i]);
f[1,i]:=max(f[1,i-1],f[0,i-1]+a[i]);
end;
write(max(f[0,n],f[1,n]));
end.