一次操作从左到右处理字符串。对于当前位置 i,设当前字符为 c,如果左边字符 c 的数量等于右边字符 c 的数量,就把它改成下一个字母。
这个条件等价于:当前位置 i 是当前字符 c 在整个字符串中的中位出现位置,并且字符 c 的出现次数是奇数。
因此可以维护每个字母的所有出现位置:
在蝴蝶悲园里,有一串写着小写字母的标牌。
你拿到一个长度为 n的字符串 s(下标从1到 n)。
你需要对字符串做 k 次 “操作”。
一次操作的过程如下:你从左到右依次处理 i=1,2,…,n。
在一次操作中,按 i=1,2,…,n 的顺序依次处理每个位置,每个位置的修改将立即生效并影响后续位置的统计:
'z' 变为 'a'),否则保持不变。现在我们将按顺序执行 k 次操作,请你输出做完k次操作后的最终字符串。
每个测试文件均包含多组测试数据。
第一行输入一个整数
t (1≤t≤2×105)
代表数据组数,每组测试数据描述如下:
除此之外,保证单个测试文件的 n 之和不超过 105,k 之和不超过 105。
对于每一组测试数据,新起一行输出做完k 次操作后的最终字符串。
输入
2
2 1
ab
3 2
abc
输出
bb
bbe