首页 > 试题广场 >

小红的区间增加

[编程题]小红的区间增加
  • 热度指数:243 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个数组,她每次可以任选一个区间,使得区间所有元素加1。小红想知道,使得数组中所有元素严格递增的最小操作次数是多少?

输入描述:
第一行输入一个正整数n,代表数组的元素数量。
第二行输入n个正整数a_i,代表数组的元素。
1\leq n \leq 10^5
1\leq a_i \leq 10^9


输出描述:
一个整数,代表最小的操作次数。
示例1

输入

3
3 2 4

输出

2

说明

一种合法的操作如下:
第一次选择区间[2,2],数组变成[3,3,4]。
第二次选择区间[2,3],数组变成[3,4,5],满足要求。
请注意,这里的区间指选了第几个数。例如区间[2,2]代表选了第二个数,区间[2,3]代表选了第二个和第三个数。
头像 wangjy520
发表于 2023-03-07 12:17:23
采用差分数组,将原数组变为严格单调递增等价于该数组的差分数组除了第一项都必须是正数,基于贪心的思想,如果除了第一项的某一项不是正数,则将其变为1即可,即以这一项的下标作为区间的左端点,右端点是什么无所谓。 #include<bits/stdc++.h> using name 展开全文

问题信息

难度:
7条回答 1726浏览

热门推荐

通过挑战的用户

小红的区间增加