AT_joi2013ho1 電飾 (Illumination)
题目描述
在 JOI 高中的文化节上,每年都会在走廊上装饰灯饰。灯饰由 $N$ 个灯泡组成,这些灯泡从走廊的西侧到东侧排成一列。每个灯泡要么是亮着的,要么是灭着的。
JOI 高中的仓库里有一台可以操作灯泡的机器。这台机器可以指定灯饰中一段连续的灯泡,将指定范围内所有亮着的灯泡变为灭着,所有灭着的灯泡变为亮着。但由于机器老化,只能使用 $1$ 次。
JOI 高中的学生们喜欢亮灭交替排列的灯泡序列(这种灯泡序列称为**交替序列**)。因此,他们希望通过最多使用一次机器,使灯饰中包含尽可能长的交替序列。
输入格式
从标准输入读取以下数据:
- 第 $1$ 行为整数 $N$。
- 第 $2$ 行有 $N$ 个用空格分隔的 $0$ 或 $1$,表示操作机器前每个灯泡的状态。从左到右第 $i$ 个数($1 \leq i \leq N$)表示从西侧起第 $i$ 个灯泡的状态,$1$ 表示灯泡亮着,$0$ 表示灯泡灭着。
输出格式
输出一个整数,表示通过最多使用一次机器后,灯饰中所能包含的最长交替序列的长度。
说明/提示
### 例子
例如,灯饰从西到东的排列为:
> ○ ○ ● ● ○ ● ○ ○ ○ ●
(○ 表示亮着的灯泡,● 表示灭着的灯泡)
此时,如果对第 $4$ 个到第 $7$ 个灯泡使用机器:
> ○ ○ ● ○ ● ○ ● ○ ○ ●
则第 $2$ 个到第 $8$ 个灯泡构成了长度为 $7$ 的交替序列。
> ○ ○ ● ○ ● ○ ● ○ ○ ●
如果只对第 $8$ 个灯泡使用机器:
> ○ ○ ● ● ○ ● ○ ● ○ ●
则第 $4$ 个到第 $10$ 个灯泡构成了长度为 $7$ 的交替序列。
> ○ ○ ● ● ○ ● ○ ● ○ ●
最多使用一次机器,无法得到长度大于 $8$ 的交替序列。
### 任务
给定灯饰的信息,请编写程序,求出通过最多使用一次机器后,灯饰中所能包含的最长交替序列的长度。
### 限制
$2 \leq N \leq 100\,000$
### 评分标准
在 $20\%$ 的测试点中,$N \leq 500$。
在 $40\%$ 的测试点中,$N \leq 2\,000$。
# 样例解释 1
这是题目描述中的例子。
# 样例解释 2
如果只操作西侧第 $4$ 个灯泡,可以得到长度为 $8$ 的交替序列。
# 样例解释 3
如果操作西侧第 $2$ 个到第 $4$ 个灯泡,可以使所有灯泡构成交替序列。
# 样例解释 4
注意,有时可以不使用机器。
由 ChatGPT 4.1 翻译