博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P5019 铺设道路(差分)
阅读量:5325 次
发布时间:2019-06-14

本文共 739 字,大约阅读时间需要 2 分钟。

嗯...

 

题目链接:https://www.luogu.org/problem/P5019

 

首先简化一下题意:

给定一个长为N的数组,每次操作可以选择一个区间减去1,问最少多少次操作可以将数组中的数全变成0 N≤100000

 

思路:

首先对于第一个数字d_1我们至少需要在上面花d_i次,然后考虑每一个d_i,对于它比上一个数字小(或等于)的那一部分,

我们可以在对上一个数字操作时一块操作。如果d_i > d_i - 1,也就是说它比上一个数大,那么我们就必须多进行d_i - d_i - 1次操作。

很明显,数与数之间会有差,而差会造成一些区间问题,所以这道题的正解是差分...

我们用b数组维护差分,然后将大于0的差分数组加到ans中即可。

 

AC代码:

1 #include
2 #include
3 4 using namespace std; 5 6 int ans, d[100005], b; 7 8 int main(){ 9 int n;10 scanf("%d", &n);11 for(int i = 1; i <= n; i++){12 scanf("%d", &d[i]);13 b = d[i] - d[i - 1];14 if(b > 0) ans += b;15 }16 printf("%d", ans);17 return 0;18 }19
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/11267087.html

你可能感兴趣的文章
redis 存储时间区间的数据
查看>>
STM32F0库函数初始化系列:进入STOP模式,外部中断唤醒
查看>>
p1525 关押罪犯
查看>>
使用Html5shiv.js让ie支持html5
查看>>
DBA 优化法则
查看>>
用Python连接SQLServer抓取分析数据、监控 (pymssql)
查看>>
升级ruby后再安装cocodPod
查看>>
MySQL数据库8(十三)高级数据操作之select指令
查看>>
随心测试_Python Se_002<不同浏览器驱动>
查看>>
在ASP.NET WebService 中如何使用 WebMethod 属性
查看>>
一个很详细的web.xml讲解
查看>>
Java输入输出流
查看>>
java实现文件的复制
查看>>
BZOJ 4695 最假女选手 线段树
查看>>
好的分析报告应该包含的内容
查看>>
使用GIT的失败过程
查看>>
Unity3d 协程的注意问题(新手须注意,老手须加勉)
查看>>
python爬虫学习(10) —— 专利检索DEMO
查看>>
日历 java方法实现
查看>>
Integer值判断是否相等问题
查看>>