CF1659B.Bit Flipping
普及-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given a binary string of length n. You have exactly k moves. In one move, you must select a single bit. The state of all bits except that bit will get flipped (0 becomes 1, 1 becomes 0). You need to output the lexicographically largest string that you can get after using all k moves. Also, output the number of times you will select each bit. If there are multiple ways to do this, you may output any of them.
A binary string a is lexicographically larger than a binary string b of the same length, if and only if the following holds:
- in the first position where a and b differ, the string a contains a 1, and the string b contains a 0.
给你一个长度为 n 的二进制字符串。你恰好有 k 次操作。每次操作中,你必须选择某一位。除该位外,其余所有位的状态均被翻转(即 0 变为 1,1 变为 0)。你需要输出经过全部 k 次操作后能得到的字典序最大的字符串,并输出每一位被选中的次数。若存在多种方案,输出任意一种即可。
当且仅当满足以下条件时,二进制字符串 a 的字典序大于相同长度的二进制字符串 b:
- 在 a 与 b 首次出现差异的位置上,a 中该位为 1,而 b 中该位为 0。
输入格式
The first line contains a single integer t (1≤t≤1000) — the number of test cases.
Each test case has two lines. The first line has two integers n and k (1≤n≤2⋅105; 0≤k≤109).
The second line has a binary string of length n, each character is either 0 or 1.
The sum of n over all test cases does not exceed 2⋅105.
第一行包含一个整数 t(1≤t≤1000)—— 表示测试用例的数量。
每个测试用例包含两行。第一行包含两个整数 n 和 k(1≤n≤2⋅105;0≤k≤109)。
第二行包含一个长度为 n 的二进制字符串,其中每个字符为 0 或 1。
所有测试用例的 n 值之和不超过 2⋅105。
输出格式
For each test case, output two lines.
The first line should contain the lexicographically largest string you can obtain.
The second line should contain n integers f1,f2,…,fn, where fi is the number of times the i-th bit is selected. The sum of all the integers must be equal to k.
对于每个测试用例,输出两行。
第一行应包含你能得到的字典序最大的字符串。
第二行应包含 n 个整数 f1,f2,…,fn,其中 fi 表示第 i 位被选中的次数。所有整数之和必须等于 k。
输入输出样例
输入#1
6 6 3 100001 6 4 100011 6 0 000000 6 1 111001 6 11 101100 6 12 001110
输出#1
111110 1 0 0 2 0 0 111110 0 1 1 1 0 1 000000 0 0 0 0 0 0 100110 1 0 0 0 0 0 111111 1 2 1 3 0 4 111110 1 1 4 2 0 4
说明/提示
Here is the explanation for the first testcase. Each step shows how the binary string changes in a move.
- Choose bit 1: 100001→111110.
- Choose bit 4: 111110→000101.
- Choose bit 4: 000101→111110.
The final string is 111110 and this is the lexicographically largest string we can get.
以下是第一个测试用例的解释。每一步都展示了二进制字符串在一次操作中如何变化。
- 选择第 1 位:100001→111110。
- 选择第 4 位:111110→000101。
- 选择第 4 位:000101→111110。
最终字符串为 111110,这也是我们能得到的字典序最大的字符串。
输入解题思路,AI测评打分。不知道怎么写?