2018noip提高组 :铺设道路

题目:

· 题目描述

· 输入

· 输出

· 样例输入

6
4 3 2 5 3 5

· 样例输出

9

· 提示

 

思路:

看到这个题目,一开始我的思路是找出有几个坑,然后算每个坑中最深的深度加起来即可,但后来一想,如果一个大坑中存在两种,或更多的小坑怎么办。

整体思路就是这样,找深的坑去填,一定区域内,只要算最深的即可。

就想到了这么一个方法:如果下一个地方更深(比现在深),那么填路次数加上这两段路深度差,如果下个地方比现在浅,就不去管他了。

代码:

#include 
int rod[100005],fix;
using namespace std;
int main()
{
    int n;
    cin>>n;
    fix=0;
    for(int i=1;i<=n;i++)
    {
        cin>>rod[i];
        if(i==1)
        {
            fix+=rod[i];
        }
        else
        {
            if(rod[i]>rod[i-1])
            {
                fix+=rod[i]-rod[i-1];
            }
        }
    }
    cout<

 

你可能感兴趣的:(c++)