贪心
使用数组 f[i] : 来表示铺平前i块需要的最短的天数
遍历所有的土地:
当a[i+1] <= a[i]
时,f[i+1] = f[i]
,后边的区域比前边的小,则后边的区域可以趁着前边铺的时候铺平。
当a[i+1] > a[i]
时,f[i+1] = f[i] + (a[i+1] - a[i])
,后边的区域比前边的大,则需要先铺平前边(f[i]),再铺平后边比他前边那一个多出的部分(a[i+1] - a[i])
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int res = 0;
int[] f = new int[n+1];
int[] a = new int[n+1];
for(int i = 1 ; i <= n ; i++)
{
a[i] = sc.nextInt();
}
f[1] = a[1];
for(int i = 1 ; i < n ; i++)
{
if(a[i+1] <= a[i])
{
f[i+1] = f[i];
}else
{
f[i+1] = f[i] + (a[i+1]-a[i]);
}
}
System.out.println(f[n]);
}
}