AT_joi2013ho1.電飾 (Illumination)

普及-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在 JOI 高中的文化节上,每年都会在走廊上装饰灯饰。灯饰由 NN 个灯泡组成,这些灯泡从走廊的西侧到东侧排成一列。每个灯泡要么是亮着的,要么是灭着的。

JOI 高中的仓库里有一台可以操作灯泡的机器。这台机器可以指定灯饰中一段连续的灯泡,将指定范围内所有亮着的灯泡变为灭着,所有灭着的灯泡变为亮着。但由于机器老化,只能使用 11 次。

JOI 高中的学生们喜欢亮灭交替排列的灯泡序列(这种灯泡序列称为交替序列)。因此,他们希望通过最多使用一次机器,使灯饰中包含尽可能长的交替序列。

输入格式

从标准输入读取以下数据:

  • 第 11 行为整数 NN。
  • 第 22 行有 NN 个用空格分隔的 00 或 11,表示操作机器前每个灯泡的状态。从左到右第 ii 个数(1≤i≤N1 \leq i \leq N)表示从西侧起第 ii 个灯泡的状态,11 表示灯泡亮着,00 表示灯泡灭着。

输出格式

输出一个整数,表示通过最多使用一次机器后,灯饰中所能包含的最长交替序列的长度。

输入输出样例

  • 输入#1

    10
    1 1 0 0 1 0 1 1 1 0

    输出#1

    7
  • 输入#2

    10
    1 0 0 0 0 1 0 1 0 1

    输出#2

    8
  • 输入#3

    5
    1 1 0 1 1

    输出#3

    5
  • 输入#4

    3
    0 1 0

    输出#4

    3

说明/提示

例子

例如,灯饰从西到东的排列为:

○ ○ ● ● ○ ● ○ ○ ○ ●

(○ 表示亮着的灯泡,● 表示灭着的灯泡)

此时,如果对第 44 个到第 77 个灯泡使用机器:

○ ○ ● ○ ● ○ ● ○ ○ ●

则第 22 个到第 88 个灯泡构成了长度为 77 的交替序列。

○ ○ ● ○ ● ○ ● ○ ○ ●

如果只对第 88 个灯泡使用机器:

○ ○ ● ● ○ ● ○ ● ○ ●

则第 44 个到第 1010 个灯泡构成了长度为 77 的交替序列。

○ ○ ● ● ○ ● ○ ● ○ ●

最多使用一次机器,无法得到长度大于 88 的交替序列。

任务

给定灯饰的信息,请编写程序,求出通过最多使用一次机器后,灯饰中所能包含的最长交替序列的长度。

限制

2≤N≤100 0002 \leq N \leq 100\,000

评分标准

在 20%20\% 的测试点中,N≤500N \leq 500。

在 40%40\% 的测试点中,N≤2 000N \leq 2\,000。

样例解释 1

这是题目描述中的例子。

样例解释 2

如果只操作西侧第 44 个灯泡,可以得到长度为 88 的交替序列。

样例解释 3

如果操作西侧第 22 个到第 44 个灯泡,可以使所有灯泡构成交替序列。

样例解释 4

注意,有时可以不使用机器。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页