USACO 编程竞赛概要:初级通关练习题# 3

由a、b、c三个字母组成的一串字符串首尾相连,a/b/c字母的排列无序,字符串总长度为3到300之间。任意选择一个点,统计从该点往前计数同一字母的数量,加上该点往后另外一个相同字母的数量之和。字母a既可以当做字母b来计数,也可以作为字母c来计数。计算这一组字符串可以找到前后两组字母之和的最大值。

输入样例:

30
aaabbcacbcbccbcbcacaacbaacaccb

输出样例:

12

上面的输入样例如果首尾相连,可以看作下面两串相同的字符串连接在一起:

aaabbcacbcbccbcbcacaacbaacaccb|aaabbcacbcbccbcbcacaacbaacaccb
ccccccb|bbbbb
6c + 6b = 12

字符串最后的七个字母:aacaccb 可以看作 ccccccb,字符串开始的五个字母:aaabb 可以看作 bbbbb。这样首尾相加就是12个字母。12也是这一组字符串中可以找到符合要求的字母数最大值。