不水的一发,有点 前缀加dp
看代码注释
#include <bits/stdc++.h>
using namespace std;
int n;
int a[100001];
int b[100010];
int ans = 0;
//先用一个前缀和来维护
//如果第 i 个数字比i-1个小,代表他是能和上一个一起修好的,用i次。b[i]=b[i-1]
//如果第 i 个数字比i-1大,代表他只能尽量去修,而不能完全修好
//先带着一起修理,可以修理a[i-1]次 则剩下a[i]-a[i-1]次来单独修理
//而后在从i开始维护 b[i]=a[i]-a[i-1]+b[i-1]
int main() {
cin >> n;
cin >> a[1];
b[1] = a[1];
for (int i = 2; i <= n; i++) {
cin >> a[i];
if (a[i] <= a[i - 1]) {
b[i] = b[i - 1];
} else
b[i] = a[i] - a[i - 1] + b[i - 1];
}
cout << b[n];
return 0;
}