5592: 最长非递减子序列
[Creator : ]
Description
给定一个长度为 $n$ 的数字序列 $a_1,\ a_2,\ \cdots,\ a_n$,序列中只包含数字 $1$ 和 $2$。
现在,你要选取一个区间 $[l,\ r]\ (1≤l≤r≤n)$,将 $a_l,\ a_{l+1},\ \cdots,\ a_r$ 进行翻转,并且使得到的新数字序列 $a$ 的最长非递减子序列的长度尽可能长。
请问,这个最大可能长度是多少?
一个非递减子序列是指一个索引为 $p_1,\ p_2,\ \cdots,\ p_k$ 的序列,满足 $p_1<p_2<\cdots <p_k$ 并且 $a_{p_1}≤a_{p_2}≤ \cdots ≤a_{p_k}$,其长度为 $k$。
现在,你要选取一个区间 $[l,\ r]\ (1≤l≤r≤n)$,将 $a_l,\ a_{l+1},\ \cdots,\ a_r$ 进行翻转,并且使得到的新数字序列 $a$ 的最长非递减子序列的长度尽可能长。
请问,这个最大可能长度是多少?
一个非递减子序列是指一个索引为 $p_1,\ p_2,\ \cdots,\ p_k$ 的序列,满足 $p_1<p_2<\cdots <p_k$ 并且 $a_{p_1}≤a_{p_2}≤ \cdots ≤a_{p_k}$,其长度为 $k$。
Input
第一行一个整数 $n$。
第二行 $n$ 个空格隔开的数字 $1$ 或 $2$,表示 $a_1,\ a_2,\ \cdots,\ a_n$。
第二行 $n$ 个空格隔开的数字 $1$ 或 $2$,表示 $a_1,\ a_2,\ \cdots,\ a_n$。
Output
输出一个整数,表示得到的新数字序列 $a$ 的最长非递减子序列的最大可能长度。
Constraints
对于 $30\%$ 的数据,$1≤n≤100$。
对于 $100\%$ 的数据,$1≤n≤10^6$。
对于 $100\%$ 的数据,$1≤n≤10^6$。
Sample 1 Input
4
1 2 1 2
Sample 1 Output
4
我们只需要翻转 $[2,\ 3]$ 这个区间的数据,得到新的序列 $1\ 1\ 2\ 2$,这样长度为 $4$。
Sample 2 Input
10
1 1 2 2 2 1 1 2 2 1
Sample 2 Output
9
我们只需要翻转 $[3,\ 7]$ 这个区间的数据,得到新的序列 $1\ 1\ 1\ 1\ 2\ 2\ 2\ 2\ 2\ 1$,这样长度为 $9$。