4007-非零段划分

4007. 非零段划分 - AcWing题库

题目描述

关系

0001-2014-岛

内容

A1,A2,,An 是一个由 n 个自然数(非负整数)组成的数组。

我们称其中 Ai,,Aj 是一个非零段,当且仅当以下条件同时满足:

下面展示了几个简单的例子:

现在我们可以对数组 A 进行如下操作:任选一个正整数 p,然后将 A 中所有小于 p 的数都变为 0

试选取一个合适的 p,使得数组 A 中的非零段个数达到最大。

若输入的 A 所含非零段数已达最大值,可取 p=1,即不对 A 做任何修改。

输入格式

输入的第一行包含一个正整数 n

输入的第二行包含 n 个用空格分隔的自然数 A1,A2,,An

输出格式

仅输出一个整数,表示对数组 A 进行操作后,其非零段个数能达到的最大值。

数据范围

70% 的测试数据满足 n1000
全部的测试数据满足 n5×105,且数组 A 中的每一个数均不超过 104

输入样例 1:

11
3 1 2 0 0 2 0 4 5 0 2

输出样例 1:

5

样例 1 解释

p=2 时,A=[3,0,2,0,0,2,0,4,5,0,2]5 个非零段依次为 [3][2][2][4,5][2];此时非零段个数达到最大。

输入样例 2:

14
5 1 20 10 10 10 10 15 10 20 1 5 10 15

输出样例 2:

4

样例 2 解释

p=12 时,A=[0,0,20,0,0,0,0,15,0,20,0,0,0,15]4 个非零段依次为 [20][15][20][15];此时非零段个数达到最大。

输入样例 3:

3
1 0 0

输出样例 3:

1

样例 3 解释

p=1 时,A=[1,0,0],此时仅有 1 个非零段 [1],非零段个数达到最大。

输入样例 4:

3
0 0 0

输出样例 4:

0

样例 4 解释

无论 p 取何值,A 都不含有非零段,故非零段个数至多为 0

问题分析

最初思路

我们并不关心,究竟有多少高,只关系某个时刻,是否能够大于 0. 也就是与旁边元素的关系。

思路分析

执行流程设计

总结

代码实现