Pro
Sol
既然是道水题,就把代码写的漂亮一点(逃
重题:Luogu1969(看到这两个题的题解中有一篇一模一样的……)
可能在 这里翻译的不是太好,可以去看重题的题意。每次删除肯定是一个区间删除,所以有人打线段树神马(比如xy大爷),其实可以用贪心来写,贪心策略是,如果后面的高度比现在存的高度要高,答案就加上高出来的那一块,更新存下来的高度。因为每次都是按照一个区间来删除,如果后面发现一个比较高的,可能会按照当前存的这个高度来删除,因为它比较矮。还要知道,答案变量的初始值是第一个的高度。
Code
#include<iostream>
#include<cstdio>
using namespace std;
long long n , data[100005] , ans , maxx;
int main() {
scanf("%lld",&n);
for(int i=1; i<=n; i++)
scanf("%lld",&data[i]);
ans = maxx = data[1];
for(int i=2; i<=n; i++)
ans += (data[i]>maxx)?(data[i]-maxx):0 , maxx = data[i];
printf("%lld",ans);
return 0;
}