问题标题: 酷町堂:4081 酷町猫爬天梯

0
0
已解决
被禁言 贾天宇
贾天宇
高级守护
高级守护

题目描述 Description

酷町猫喜欢在酷町天梯上做题刷分,他整整刷了n天。已知他在第i天得了ai分(1 ≤ i ≤ n;)。酷町猫非常喜欢进步,所以他想知道存储得分的数组ai里最大非递减子数组的长度。数组的子数组就是它的连续片段。如果其中的所有数字都遵循非递减顺序(也就是增加或者不变),则称为非递减的数组。帮酷町猫解决这个难题吧。例如得分数组1 2 2 3 3 3 4 5 4 4 5 5,其中子数组1 2 2 3 3 3 4 5是非递减的,长度为8;而4 4 5 5也是非递减的子数组,长度只有4,所以这个得分数组的最大非递减子数组的长度为8。

输入描述 Input Description

第一行包含整数n(1≤n≤10^5)。

第二行包含n个整数a1,a2,…,an(1≤ai≤10^9)。

输出描述 Output Description

输出一个整数,数组ai的最大非递减子数组的长度。

样例输入 Sample Input

 

【输入样例1】
6
2 2 1 3 4 1

【输入样例2】
3
2 2 9

样例输出 Sample Output

 

【输出样例1】
3

【输出样例2】
3

数据范围及提示 Data Size & Hint

在第一个样例中,最大的非递减子段是从第三个元素到第五个元素的数字。

在第二个样例中,最大的非递减子段是从第一个元素到第三个元素的数字。


0
已采纳
栾峻岩
栾峻岩
初级天翼
初级天翼

这道题并不需要用到DP或者递推,一个普通的for循环就行了,不必要这么复杂 @赵逸凡 

我们定义一个概念,叫做断点,就是一个点的值如果大于后面那个点的值,就被称为断点。

由题意得,一个 最大非递减子数组 必须是连续的,所以在这个数组里断点要求是最多的。

 

首先,要保证断点和断点后面的数不能同时出现在这个数组里,所以要想保证数组的长度最大,只能有一个断点和另一个断点的后面那个。

 

例如样例1,断点是2 和 5,所以数组中只能允许3,4,5同时出现。

∴最大长度为3

 

做法就是先找出所有断点,再取出相邻两个断点的位置差的最大值即可。

100%AC

0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

DP吧!

这个递减数组的长度不能用int定义,一般级数组的范围是五百万,最好用队列或string内型开。

递减是noip2009的题,历届noip基本都有。

应该是数论

赵逸凡在2019-06-08 15:58:15追加了内容

看了下题目,子数组,应该是....你可以用i-n来切割这个数组

0
吕牧原
吕牧原
高级守护
高级守护

DP吧!

这个递减数组的长度不能用int定义,一般级数组的范围是五百万,最好用队列或string内型开。

递减是noip2009的题,历届noip基本都有。

应该是数论

已举报,不客气

0
0
被禁言 姜思远
姜思远
初级光能
初级光能

我们定义一个概念,叫做断点,就是一个点的值如果大于后面那个点的值,就被称为断点。

由题意得,一个 最大非递减子数组 必须是连续的,所以在这个数组里断点要求是最多的。

 

首先,要保证断点和断点后面的数不能同时出现在这个数组里,所以要想保证数组的长度最大,只能有一个断点和另一个断点的后面那个。

0
徐媛一
徐媛一
修练者
修练者

这题不用DP或递推,用简单的for循环就可以解决了。做题时不要想得太复杂。

注:建议先打好基础再做,思路有些绕

0
黄钰杰
黄钰杰
初级守护
初级守护

不会

这题很难

建议先打好基础

我要回答