CF1606A.AB Balance

入门

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given a string ss of length nn consisting of characters a and/or b.

Let AB⁡(s)\operatorname{AB}(s) be the number of occurrences of string ab in ss as a substring. Analogically, BA⁡(s)\operatorname{BA}(s) is the number of occurrences of ba in ss as a substring.

In one step, you can choose any index ii and replace sis_i with character a or b.

What is the minimum number of steps you need to make to achieve AB⁡(s)=BA⁡(s)\operatorname{AB}(s) = \operatorname{BA}(s)?

Reminder:

The number of occurrences of string dd in ss as substring is the number of indices ii (1≤i≤∣s∣−∣d∣+11 \le i \le |s| - |d| + 1) such that substring sisi+1…si+∣d∣−1s_i s_{i + 1} \dots s_{i + |d| - 1} is equal to dd. For example, AB⁡(\operatorname{AB}(aabbbabaa)=2) = 2 since there are two indices ii: i=2i = 2 where aabbbabaa and i=6i = 6 where aabbbabaa.

给你一个长度为 nn 的字符串 ss,它仅由字符 a 和/或 b 组成。

令 AB⁡(s)\operatorname{AB}(s) 表示子串 ab 在 ss 中出现的次数;类似地,BA⁡(s)\operatorname{BA}(s) 表示子串 ba 在 ss 中出现的次数。

在一步操作中,你可以任选一个下标 ii,并将 sis_i 替换为字符 a 或 b。

你需要执行的最少操作步数是多少,才能使得 AB⁡(s)=BA⁡(s)\operatorname{AB}(s) = \operatorname{BA}(s)?

提示:

字符串 dd 在 ss 中作为子串出现的次数,定义为满足以下条件的下标 ii 的个数(其中 1≤i≤∣s∣−∣d∣+11 \le i \le |s| - |d| + 1):子串 sisi+1…si+∣d∣−1s_i s_{i + 1} \dots s_{i + |d| - 1} 恰好等于 dd。例如,AB⁡(\operatorname{AB}(aabbbabaa)=2) = 2,因为在该字符串中有两个下标 ii 满足条件:i=2i = 2(对应子串 aabbbabaa)和 i=6i = 6(对应子串 aabbbabaa)。

输入格式

Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤10001 \le t \le 1000). Description of the test cases follows.

The first and only line of each test case contains a single string ss (1≤∣s∣≤1001 \le |s| \le 100, where ∣s∣|s| is the length of the string ss), consisting only of characters a and/or b.

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤10001 \le t \le 1000)。随后是测试用例的描述。

每个测试用例仅有一行,包含一个字符串 ss(1≤∣s∣≤1001 \le |s| \le 100,其中 ∣s∣|s| 表示字符串 ss 的长度),且 ss 仅由字符 a 和/或 b 组成。

输出格式

For each test case, print the resulting string ss with AB⁡(s)=BA⁡(s)\operatorname{AB}(s) = \operatorname{BA}(s) you'll get making the minimum number of steps.

If there are multiple answers, print any of them.

对于每个测试用例,输出经过最少步数操作后得到的字符串 ss,使得 AB⁡(s)=BA⁡(s)\operatorname{AB}(s) = \operatorname{BA}(s)。

如果存在多个满足条件的答案,输出任意一个即可。

输入输出样例

  • 输入#1

    4
    b
    aabbbabaa
    abbb
    abbaab

    输出#1

    b
    aabbbabaa
    bbbb
    abbaaa

说明/提示

In the first test case, both AB⁡(s)=0\operatorname{AB}(s) = 0 and BA⁡(s)=0\operatorname{BA}(s) = 0 (there are no occurrences of ab (ba) in b), so can leave ss untouched.

In the second test case, AB⁡(s)=2\operatorname{AB}(s) = 2 and BA⁡(s)=2\operatorname{BA}(s) = 2, so you can leave ss untouched.

In the third test case, AB⁡(s)=1\operatorname{AB}(s) = 1 and BA⁡(s)=0\operatorname{BA}(s) = 0. For example, we can change s1s_1 to b and make both values zero.

In the fourth test case, AB⁡(s)=2\operatorname{AB}(s) = 2 and BA⁡(s)=1\operatorname{BA}(s) = 1. For example, we can change s6s_6 to a and make both values equal to 11.

在第一个测试用例中,AB⁡(s)=0\operatorname{AB}(s) = 0 且 BA⁡(s)=0\operatorname{BA}(s) = 0(字符串 b 中不包含子串 ab 或 ba),因此可以保持 ss 不变。

在第二个测试用例中,AB⁡(s)=2\operatorname{AB}(s) = 2 且 BA⁡(s)=2\operatorname{BA}(s) = 2,因此可以保持 ss 不变。

在第三个测试用例中,AB⁡(s)=1\operatorname{AB}(s) = 1 且 BA⁡(s)=0\operatorname{BA}(s) = 0。例如,我们可以将 s1s_1 改为 b,从而使两个值均变为 0。

在第四个测试用例中,AB⁡(s)=2\operatorname{AB}(s) = 2 且 BA⁡(s)=1\operatorname{BA}(s) = 1。例如,我们可以将 s6s_6 改为 a,从而使两个值均等于 11。

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

首页