CF1789B.Serval and Inversion Magic

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Serval and Inversion Magic

题目描述

Serval 有一个只包含 0011 的字符串 ss,长度为 nn。第 ii 个字符记为 sis_i,其中 1in1\leq i\leq n

Serval 可以对字符串 ss 执行如下操作,称为“反转魔法”:

  • 选择一个区间 [l,r][l, r]1lrn1\leq l\leq r\leq n)。对于 lirl\leq i\leq r,如果 sis_i00,则将其变为 11;如果 sis_i11,则将其变为 00

例如,若 s=010100s=010100,选择区间 [2,5][2,5],则执行反转魔法后 ss 变为 001010001010

Serval 想要通过恰好执行一次反转魔法,使得 ss 变为回文串。请你帮他判断是否有可能。

一个字符串是回文串,当且仅当它正着读和反着读都相同。例如,010010010010 是回文串,但 1011110111 不是。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt1t1041\leq t\leq 10^4),表示测试用例的数量。

每组测试用例的第一行包含一个整数 nn2n1052\leq n\leq 10^5),表示字符串 ss 的长度。

第二行包含一个长度为 nn 的二进制字符串 ss,仅包含字符 0011

保证所有测试用例中 nn 的总和不超过 21052\cdot 10^5

输出格式

对于每组测试用例,如果可以通过恰好一次反转魔法使 ss 变为回文串,输出 Yes,否则输出 No。

你可以用任意大小写形式输出 Yes 和 No(例如 yEs、yes、Yes、YES 都会被识别为肯定回答)。

说明/提示

在第一个测试用例中,Serval 可以对区间 [1,4][1,4] 执行反转魔法,ss 变为 01100110

在第二个测试用例中,Serval 可以对区间 [1,3][1,3] 执行反转魔法,ss 变为 0111001110

在第三个测试用例中,Serval 无法通过恰好一次反转魔法将 ss 变为回文串。

由 ChatGPT 4.1 翻译

样例

3
4
1001
5
10010
7
0111011
Yes
Yes
No

在线编程 IDE

建议全屏模式获得最佳体验