CF603A.Alternative Thinking
普及/提高-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Kevin has just recevied his disappointing results on the USA Identification of Cows Olympiad (USAICO) in the form of a binary string of length n. Each character of Kevin's string represents Kevin's score on one of the n questions of the olympiad—'1' for a correctly identified cow and '0' otherwise.
However, all is not lost. Kevin is a big proponent of alternative thinking and believes that his score, instead of being the sum of his points, should be the length of the longest alternating subsequence of his string. Here, we define an alternating subsequence of a string as a not-necessarily contiguous subsequence where no two consecutive elements are equal. For example, {0, 1, 0, 1}, {1, 0, 1}, and {1, 0, 1, 0} are alternating sequences, while {1, 0, 0} and {0, 1, 0, 1, 1} are not.
Kevin, being the sneaky little puffball that he is, is willing to hack into the USAICO databases to improve his score. In order to be subtle, he decides that he will flip exactly one substring—that is, take a contiguous non-empty substring of his score and change all '0's in that substring to '1's and vice versa. After such an operation, Kevin wants to know the length of the longest possible alternating subsequence that his string could have.
凯文刚刚收到了美国奶牛识别奥林匹克竞赛(USAICO)的令人失望的成绩,成绩以一个长度为 n 的二进制字符串形式给出。该字符串中的每个字符代表凯文在 USAICO 的 n 道题目中某一道题的得分——'1' 表示正确识别了一头奶牛,'0' 表示未正确识别。
然而,事情并非毫无转机。凯文是一位另类思维的坚定拥护者,他认为自己的得分不应是各题得分之和,而应是其字符串的最长交替子序列的长度。此处,我们定义字符串的一个交替子序列为:一个不一定连续的子序列,其中任意两个相邻元素均不相等。例如,{0,1,0,1}、{1,0,1} 和 {1,0,1,0} 均为交替序列;而 {1,0,0} 和 {0,1,0,1,1} 则不是。
凯文作为一个狡黠的小绒球,愿意黑入 USAICO 数据库来提升自己的成绩。为了显得隐蔽,他决定恰好翻转一个子串——即选取一个连续的非空子串,并将其中所有 '0' 变为 '1'、所有 '1' 变为 '0'。执行这一操作后,凯文希望知道他的字符串所能达到的最长交替子序列的长度的最大可能值。
输入格式
The first line contains the number of questions on the olympiad n (1 ≤ n ≤ 100 000).
The following line contains a binary string of length n representing Kevin's results on the USAICO.
第一行包含奥林匹克竞赛的题目数量 n(1≤n≤100000)。
接下来的一行包含一个长度为 n 的二进制字符串,表示 Kevin 在 USAICO 上的作答结果。
输出格式
Output a single integer, the length of the longest possible alternating subsequence that Kevin can create in his string after flipping a single substring.
输出一个整数,表示凯文在翻转一个子字符串后,其字符串中可能形成的最长交替子序列的长度。
输入输出样例
输入#1
8 10000011
输出#1
5
输入#2
2 01
输出#2
2
说明/提示
In the first sample, Kevin can flip the bolded substring '10000011' and turn his string into '10011011', which has an alternating subsequence of length 5: '10011011'.
In the second sample, Kevin can flip the entire string and still have the same score.
在第一个样例中,Kevin 可以翻转加粗的子串 “10000011”,将其字符串变为 “10011011”,该字符串拥有长度为 5 的交替子序列:“10011011”。
在第二个样例中,Kevin 可以翻转整个字符串,但仍能得到相同的得分。
输入解题思路,AI测评打分。不知道怎么写?