loj#P3001. 「JOISC 2015 Day 3」AAQQZ

「JOISC 2015 Day 3」AAQQZ

题目描述

译自 JOISC 2015 Day3 T1「AAQQZ」,感谢 PoPoQQQ 提供翻译。

IOI2015 将要在哈萨克斯坦举行。哈萨克斯坦的「哈萨克」是用字母的 QAZAQ 拼写的。这个 QAZAQ 是回文。知晓这一点的 JOI 君出于对回文的喜爱,准备用眼前的字符串制作一个回文串。

JOI 君找到了一个长为 NN 的字符串 S=(S1,S2,,SN)S=(S_1,S_2,\cdots ,S_N),每个字符可以用 1C1\ldots C 之间的一个整数来表示。从这个字符串第 ii 个位置到第 jj 个位置的字符串 (Si,Si+1,,Sj)(S_i,S_{i+1},\cdots ,S_j) 称作子串 (i,j)(i,j)。如果子串 (i,j)(i,j) 翻转后和原来相等,即 $(S_i,S_{i+1},\cdots ,S_j)=(S_j,S_{j-1},\cdots ,S_i)$,则称子串 (i,j)(i,j) 是回文的。JOI 君进行如下操作来制作一个回文串:

  1. 首先,选择 SS 的一个子串。不妨设选择的子串为 TT
  2. 将子串 TT 按照升序排序,得到 TT’
  3. SS 中,用 TT’ 替换 TT,得到 SS’。我们可以这样描述这三项操作:JOI 君选择一个子串 (i,j)(i,j),将 Si,Si+1,,SjS_i,S_{i+1},\cdots ,S_j 按升序排序得到 Ti,Ti+1,,TjT’_i,T’_{i+1},\cdots ,T’_j,最终得到 $S’=(S_1,S_2,\cdots ,S_{i-1},T’_i,T’_{i+1},\cdots ,T’_j,S_{j+1},\cdots ,S_N)$;
  4. 在这之后,寻找 SS’ 中的回文子串。

JOI 进行如上操作后,想要得到最长的回文子串。

现在 JOI 君将字符串 SS 交给了你,请你输出 JOI 君进行如上操作后能得到的最长回文子串的长度。

输入格式

第一行两个空格分隔的正整数 NNCC,分别表示字符串的长度和字符集大小;
接下来 NN 行,第 ii 行一个正整数 SiS_i,表示字符串 SS 中第 ii 个位置的字符。

输出格式

输出一行一个正整数,表示 JOI 君进行操作后能得到的最长回文子串的长度。

12 26
26
17
17
17
1
26
1
17
19
20
1
14
8
4 3
1
2
3
2
3

数据范围与提示

对于全部数据,1N,C3000,1SiC1\le N,C\le 3000,1\le S_i\le C

本题有两个子任务。只有该任务下测试点全部通过才能得到该子任务的分数。

Subtask 附加限制 分数
11 N,C50N,C\le 50 1010
22 无附加限制 9090