P5019 [NOIP2018 提高组] 铺设道路(贪心算法)

简介: P5019 [NOIP2018 提高组] 铺设道路(贪心算法)

题目描述



春春是一名道路工程师,负责铺设一条长度为 n 的道路。


铺设道路的主要工作是填平下陷的地表。整段道路可以看作是  n 块首尾相连的区域,一开始,第 ii 块区域下陷的深度为  di 。


春春每天可以选择一段连续区间 [L,R] ,填充这段区间中的每块区域,让其下陷深度减少 1 。在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为  0 。


春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为  0 。


输入格式



输入文件包含两行,第一行包含一个整数  n,表示道路的长度。 第二行包含 n  个整数,相邻两数间用一个空格隔开,第i  个整数为  di 。


输出格式



输出文件仅包含一个整数,即最少需要多少天才能完成任务。


输入输出样例



输入 #1复制

6  

4 3 2 5 3 5


输出 #1复制

9


说明/提示



【样例解释】

一种可行的最佳方案是,依次选择: [1,6][1,6]、[1,6][1,6]、[1,2][1,2]、[1,1][1,1]、[4,6][4,6]、[4,4][4,4]、[4,4][4,4]、[6,6][6,6]、[6,6][6,6]。


【数据规模与约定】


对于   30% 的数据,1 ≤ n ≤ 10 ;

对于   70% 的数据,1 ≤ n ≤ 1000  ;

对于   100% 的数据, 1≤n≤100000,0≤di≤10000 。


题意分析;


若部分1深度>部分2深度,就有步数=部分1深度

若部分2深度>部分1深度,就有步数=部分2深度

所以不难推出(部分0深度=0):

当当前部分深度<前一部分深度,总步数不变

当当前部分深度>前一部分深度,总步数=总步数+当前部分深度-前一部分深度


代码实现:

#include<iostream>
#include<cstdio>
using namespace std;
int n,ans=0,l=0;
int main()
{
    scanf("%d",&n);
    for(int a=1;a<=n;a++)
    {
        int p;
        scanf("%d",&p);//当前深度
        if(p>l)//如果当前深度大于前一段深度
        {
            ans=ans+p-l;//总步数加当前深度减前一段深度
        }
        l=p;//前一段深度;
    }
    printf("%d\n",ans);
}


相关文章
|
算法 Unix BI
操作系统(5.2)--请求分页储存管理模式
在请求分页系统中所需要的主要数据结构是页表。为支持请求分页,须在页表中再增加若干项,供程序(数据)在换进、换出时参考。
766 0
Cocos Creator3.8 项目实战(五)背景无限滚屏效果如何实现
Cocos Creator3.8 项目实战(五)背景无限滚屏效果如何实现
732 0
|
机器学习/深度学习 存储 数据可视化
【PyTorch基础教程23】可视化网络和训练过程
为了更好确定复杂网络模型中,每一层的输入结构,输出结构以及参数等信息,在Keras中可以调用一个叫做model.summary()的API能够显示我们的模型参数,输入大小,输出大小,模型的整体参数等。
1900 0
【PyTorch基础教程23】可视化网络和训练过程
|
Web App开发 前端开发 Android开发
svg图标无法修改颜色的解决方案
svg图标无法修改颜色的解决方案
|
算法 调度 UED
操作系统(7)----调度相关知识点(万字总结~)(1)
操作系统(7)----调度相关知识点(万字总结~)
530 0
|
存储 缓存 算法
缓存优化利器:5分钟实现 LRU Cache,从原理到代码!
嗨,大家好!我是你们的技术小伙伴——小米。今天带大家深入了解并手写一个实用的LRU Cache(最近最少使用缓存)。LRU Cache是一种高效的数据淘汰策略,在内存有限的情况下特别有用。本文将从原理讲起,带你一步步用Java实现一个简单的LRU Cache,并探讨其在真实场景中的应用与优化方案,如线程安全、缓存持久化等。无论你是初学者还是有一定经验的开发者,都能从中受益。让我们一起动手,探索LRU Cache的魅力吧!别忘了点赞、转发和收藏哦~
457 2
|
算法 搜索推荐 Python
推荐算法的Python实现——ItemCF(基于物品的协同过滤)
推荐算法的Python实现——ItemCF(基于物品的协同过滤)
|
安全 Linux iOS开发
【智能家居】Home Assistant入门安装并内网穿透实现远程安全控制
【智能家居】Home Assistant入门安装并内网穿透实现远程安全控制
|
存储 前端开发 搜索推荐
【数据结构入门精讲 | 第六篇】队列知识点及考研408、企业面试练习
【数据结构入门精讲 | 第六篇】队列知识点及考研408、企业面试练习
664 0
|
C语言
C语言陷阱——无符号数和有符号数的大小比较
C语言陷阱——无符号数和有符号数的大小比较

热门文章

最新文章