CF933A A Twisty Movement

题目描述

龙象征着智慧、力量和财富。在农历新年,人们用竹条和布料制作龙的模型,用杆子举起它们,高高低低地舞动,仿佛一条飞翔的巨龙。 一个表演者低举杆子用 $1$ 表示,高举杆子用 $2$ 表示。因此,表演者的队列可以用一个序列 $a_{1},a_{2},...,a_{n}$ 表示。 小汤米也是其中一员。他想选择一个区间 $[l,r]$($1 \leq l \leq r \leq n$),然后将 $a_{l},a_{l+1},...,a_{r}$ 反转,使得新序列的最长不下降子序列的长度最大。 不下降子序列是指一组下标 $p_{1},p_{2},...,p_{k}$,满足 $p_{1}

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 2000$),表示原序列的长度。 第二行包含 $n$ 个用空格分隔的整数,表示原序列 $a_{1},a_{2},...,a_{n}$($1 \leq a_{i} \leq 2, i=1,2,...,n$)。

输出格式

输出一个整数,表示经过一次区间反转后,最长不下降子序列的最大可能长度。

说明/提示

在第一个样例中,反转区间 $[2,3]$ 后,数组变为 $[1,1,2,2]$,此时最长不下降子序列的长度为 $4$。 在第二个样例中,反转区间 $[3,7]$ 后,数组变为 $[1,1,1,1,2,2,2,2,2,1]$,此时最长不下降子序列的长度为 $9$。 由 ChatGPT 4.1 翻译