传送门
http://www.lydsy.com/JudgeOnline/problem.php?id=3043
题目大意
给定n个数的序列,每次可以对于区间+1/-1,询问最少使所有数相同的操作数,以及最小操作下的最终数列种类
题解
区间修改想到差分序列
对于差分序列y,从第2项到第n项,正的数和负的数可以对消,最后可能会剩正的或者负的,剩下的就可以自己消掉或者和第一项消掉,所以第一问就是max(正数和,abs(负数和)),第二问就是要么自己消要么和第1位消,答案为abs(正数和-abs(负数和))+1
var
x,y:array[0..100000]of int64;
i,j,k:longint;
n:longint;
a,b,ans1,ans2:int64;
begin
readln(n); a:=0; b:=0;
for i:=1 to n do
readln(x[i]);
x[0]:=0;
for i:=2 to n do
begin
y[i]:=x[i]-x[i-1];
if y[i]>0 then inc(a,y[i]) else dec(b,y[i]);
end;
if a>b then ans1:=a else ans1:=b;
ans2:=abs(a-b)+1;
writeln(ans1);
writeln(ans2);
end.