一开始还以为是什么dp题目,不过,仔细想一想第一题不会出这么难吧,所以,就考虑简单做法。
贪心的想,每次把每段区间都加到最大,然后分开的每个区间都这样操作就好了。
不过这样模拟很难实现,我们要优化一下,记录一个上次最高的y,如果当前x小于这个,对答案的贡献就加(y-x),表示这段要这么多次才可以符合要求。
代码十分短小,主要是想法。
#include<bits/stdc++.h>
#define N 100000
using namespace std;
int n;
int ans,x,y;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(x>y)ans+=(x-y);
y=x;
}
cout<<ans;
return 0;
}