CF2241C.RemovevomeR

入门

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给你一个仅由字符 01 组成的二进制字符串 ss

在一次操作中,你可以执行以下步骤:

  • 选择 ss 的一个子串^{\text{∗}},该子串是一个长度至少为 22 的回文串^{\text{†}}
  • 从该选定的子串中恰好删除一个字符

然后将字符串剩余部分拼接起来,形成新的字符串 ss

求经过任意次(可能为零次)上述操作后,字符串 ss 可能达到的最小可能长度

^{\text{∗}} 若字符串 aa 可通过从字符串 bb 的开头删除若干(可能为零或全部)字符、并从结尾删除若干(可能为零或全部)字符而得到,则称 aabb 的一个子串。

^{\text{†}} 设字符串 aa 的长度为 mm,若对所有 1im1 \le i \le m 均满足 ai=am+1ia_i = a_{m + 1 - i},则称 aa 是一个回文串。

输入格式

第一行包含一个整数 tt1t1001 \le t \le 100)—— 测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn1n1001 \le n \le 100)—— 二进制字符串 ss 的长度。

每个测试用例的第二行包含一个长度为 nn 的二进制字符串 ss。保证 ss 中的每个字符均为 0\texttt{0}1\texttt{1}

输出格式

对于每个测试用例,输出在任意次数执行该操作后字符串 ss 能达到的最小可能长度。

输入输出样例

  • 输入#1

    4
    4
    0000
    3
    110
    6
    110011
    6
    101100

    输出#1

    1
    2
    1
    1

说明/提示

在第一个测试用例中,初始字符串为 0000\texttt{0000}。我们可以执行以下操作序列:

  • 选择回文子串 0000\texttt{0000},删除其中一个 0\texttt{0},字符串变为 000\texttt{000}
  • 选择回文子串 000\texttt{000},删除其中一个 0\texttt{0},字符串变为 00\texttt{00}
  • 选择回文子串 00\texttt{00},删除其中一个 0\texttt{0},字符串变为 0\texttt{0}

字符串 0\texttt{0} 中不包含长度至少为 22 的回文子串,因此无法再执行任何操作。最小可能长度为 11

在第二个测试用例中,初始字符串为 110\texttt{110}

  • 选择回文子串 11\texttt{11},删除其中一个 1\texttt{1},字符串变为 10\texttt{10}

字符串 10\texttt{10} 中不包含长度至少为 22 的回文子串,因此无法再执行任何操作。最小可能长度为 22

输入解题思路,AI测评打分。不知道怎么写?

首页