# NOIP2018_Day1T1_铺设道路

题意:


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

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

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

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

解:


贪心即可,援引【我醉了】大佬题解中的话:

f[i] 表示前i个坑所铺设的最少天数,那么要做的只需比较一下当前的 a[i] (就是坑的深度)和 a[i1] ,分两种情况:
如果 a[i]<=a[i1] ,那么在填 a[i1] 时就可以顺便把 a[i] 填上,这样显然更优,所以 f[i]=f[i1]
否则的话,那么在填 a[i1] 时肯定要尽量把 a[i] 一块填上, a[i] 剩余的就单独填。所以, f[i]=f[i1]+(a[i]a[i1])

代码:


#include <bits/stdc++.h> using namespace std; int n; int f[100010], a[100010]; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); for (int i = 1; i <= n; i++) if (a[i] > a[i - 1]) f[i] = f[i - 1] + (a[i] - a[i - 1]); else f[i] = f[i - 1]; printf("%d\n", f[n]); return 0; }

__EOF__

本文作者熹圜
本文链接https://www.cnblogs.com/Xiwon/p/13413435.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   熹圜  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示