[noip2013]积木大赛 题解

来源:互联网 发布:安卓版千里眼偷窥软件 编辑:程序博客网 时间:2024/05/20 06:24

一开始还以为是什么dp题目,不过,仔细想一想第一题不会出这么难吧,所以,就考虑简单做法。

贪心的想,每次把每段区间都加到最大,然后分开的每个区间都这样操作就好了。

不过这样模拟很难实现,我们要优化一下,记录一个上次最高的y,如果当前x小于这个,对答案的贡献就加(y-x),表示这段要这么多次才可以符合要求。

代码十分短小,主要是想法。

#include<bits/stdc++.h>#define N 100000using 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;}