AcWing 507. 积木大赛
原题链接
中等
作者:
季之秋
,
2021-02-28 22:47:35
,
所有人可见
,
阅读 320
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int last=0;
int res=0;
while(n--!=0){
int x=sc.nextInt();
if(x>last){
res+=x-last;
}
last=x; //通过逆向思维和差分证明得到原数组等于0等同于差分数组为0;
//那么每次我们可以修改一个区间使b[l]-1,b[j]+1,这样的一步修改操作,每次修改后都可以找到一个
//b[j]<0,因为b[l]加到b[n+1]<=0的 b[l+1]到b[n+1]就小于0,可以找到一个负数,在b[l]-b[j]区间
//做一步操作,直到b[l]=0,一个一个遍历>0的数,而b[l]=h[l]-h[l-1]>0,所以最少修改b[l]次
//在差分数组我们只能一个一个减一,不能区间的去减,一个一个减再找到对应的+1就是一次区间操作
}
System.out.println(res);
}
}