高级守护
题目描述 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
在第一个样例中,最大的非递减子段是从第三个元素到第五个元素的数字。
在第二个样例中,最大的非递减子段是从第一个元素到第三个元素的数字。
初级天翼
这道题并不需要用到DP或者递推,一个普通的for循环就行了,不必要这么复杂 @赵逸凡
我们定义一个概念,叫做断点,就是一个点的值如果大于后面那个点的值,就被称为断点。
由题意得,一个 最大非递减子数组 必须是连续的,所以在这个数组里断点要求是最多的。
首先,要保证断点和断点后面的数不能同时出现在这个数组里,所以要想保证数组的长度最大,只能有一个断点和另一个断点的后面那个。
例如样例1,断点是2 和 5,所以数组中只能允许3,4,5同时出现。
∴最大长度为3
做法就是先找出所有断点,再取出相邻两个断点的位置差的最大值即可。
100%AC
初级启示者
DP吧!
这个递减数组的长度不能用int定义,一般级数组的范围是五百万,最好用队列或string内型开。
递减是noip2009的题,历届noip基本都有。
应该是数论
赵逸凡在2019-06-08 15:58:15追加了内容
看了下题目,子数组,应该是....你可以用i-n来切割这个数组
高级守护
DP吧!
这个递减数组的长度不能用int定义,一般级数组的范围是五百万,最好用队列或string内型开。
递减是noip2009的题,历届noip基本都有。
应该是数论
已举报,不客气
初级光能
我们定义一个概念,叫做断点,就是一个点的值如果大于后面那个点的值,就被称为断点。
由题意得,一个 最大非递减子数组 必须是连续的,所以在这个数组里断点要求是最多的。
首先,要保证断点和断点后面的数不能同时出现在这个数组里,所以要想保证数组的长度最大,只能有一个断点和另一个断点的后面那个。