二进制串最小化(binary)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
读写要求
本题采用文件读写,请在提交代码时使用正确的文件读写方式,否则会导致 RE
输入:binary.in
输出:binary.out
题目描述
给定一个长度为 的二进制字符串(即一个由 个字符 '0' 和 '1' 组成的字符串)。
在一次操作中,你可以交换字符串中相邻的两个字符。如果在执行不超过 次操作的情况下,你能从给定字符串中获得的字典序最小的字符串是什么?你也可以不进行任何操作。
请注意,你可以对索引为 和 的同一对相邻字符进行任意次数(可能为零)的交换。每次此类交换都被视为一次单独的操作。
你需要回答 组独立的测试用例。
输入格式
输入的第一行包含一个整数 () —— 测试用例的数量。
每个测试用例的第一行包含两个整数 和 () —— 字符串的长度和你可以执行的操作次数。
每个测试用例的第二行包含一个由 个字符 '0' 和 '1' 组成的字符串。
保证所有测试用例中 的总和不超过 ()。
输出格式
对于每个测试用例,输出对应的答案:在执行不超过 次操作的情况下,你能从给定字符串中获得的长度为 的字典序最小的字符串。
输入输出样例
3
8 5
11011010
7 9
1111100
7 11
1111100
01011110
0101111
0011111
说明/提示
在第一个示例中,你可以按以下方式更改字符串:$1\underline{10}11010 \rightarrow \underline{10}111010 \rightarrow 0111\underline{10}10 \rightarrow 011\underline{10}110 \rightarrow 01\underline{10}1110 \rightarrow 01011110$。
在第三个示例中,有足够的操作次数使字符串完成排序。