CF2064A.Brogramming Contest
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
某天你醒来后,朋友向你发起了兄弟编程比赛的挑战。在兄弟编程比赛中,你会得到一个长度为 n 的二进制字符串 ∗ s 和一个初始为空的二进制字符串 t。在比赛过程中,你可以执行以下任意操作任意次数:
- 从 s 中移除某个后缀 † 并将其添加到 t 的末尾,或
- 从 t 中移除某个后缀并将其添加到 s 的末尾。
为了赢得比赛,你必须使用最少次数的操作使得 s 仅包含字符 0 且 t 仅包含字符 1。请找出所需的最少操作次数。
∗ 二进制字符串是仅由字符 0 和 1 组成的字符串。
† 若字符串 a 可以通过删除字符串 b 开头的若干个(可能为零或全部)字符得到,则称 a 是 b 的后缀。
输入格式
第一行包含一个整数 t(1≤t≤100)——测试用例数量。
每个测试用例:
- 第一行包含一个整数 n(1≤n≤1000)——字符串 s 的长度。
- 第二行包含二进制字符串 s。
所有测试用例的 n 之和不超过 1000。
输出格式
对于每个测试用例,输出所需的最少操作次数。
输入输出样例
输入#1
5 5 00110 4 1111 3 001 5 00000 3 101
输出#1
2 1 1 0 3
说明/提示
第一个测试用例的最优解如下:
- s=00110,t= 空字符串。
- 将 110 从 s 移动到 t:s=00,t=110。
- 将 0 从 t 移回 s:s=000,t=11。
可以证明无法用少于 2 次操作完成。
第二个测试用例中,必须用一次操作将整个字符串从 s 移动到 t。
第四个测试用例中,无需任何操作。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?