A. 二进制串最小化(binary)

    传统题 文件IO:binary 1000ms 256MiB

二进制串最小化(binary)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

读写要求

本题采用文件读写,请在提交代码时使用正确的文件读写方式,否则会导致 RE

输入:binary.in

输出:binary.out

题目描述

给定一个长度为 nn 的二进制字符串(即一个由 nn 个字符 '0' 和 '1' 组成的字符串)。

在一次操作中,你可以交换字符串中相邻的两个字符。如果在执行不超过 kk 次操作的情况下,你能从给定字符串中获得的字典序最小的字符串是什么?你也可以不进行任何操作。

请注意,你可以对索引为 iii+1i+1 的同一对相邻字符进行任意次数(可能为零)的交换。每次此类交换都被视为一次单独的操作。

你需要回答 qq 组独立的测试用例。

输入格式

输入的第一行包含一个整数 qq (1q1041 \le q \le 10^4) —— 测试用例的数量。

每个测试用例的第一行包含两个整数 nnkk (1n106,1kn21 \le n \le 10^6, 1 \le k \le n^2) —— 字符串的长度和你可以执行的操作次数。

每个测试用例的第二行包含一个由 nn 个字符 '0' 和 '1' 组成的字符串。

保证所有测试用例中 nn 的总和不超过 10610^6 (n106\sum n \le 10^6)。

输出格式

对于每个测试用例,输出对应的答案:在执行不超过 kk 次操作的情况下,你能从给定字符串中获得的长度为 nn 的字典序最小的字符串。

输入输出样例

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$。

在第三个示例中,有足够的操作次数使字符串完成排序。

周赛#1023(div2)复现赛

未参加
状态
已结束
规则
IOI
题目
5
开始于
2026-4-11 20:30
结束于
2026-4-18 12:30
持续时间
1.5 小时
主持人
参赛人数
16