CFCF2183I1.Pairs Flipping (Easy Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

这是这个问题的简单版本。不同点在于,本题对最终字符串中剩余 11 的数量限制更宽松。只有你解决了本问题的所有版本后,才可以进行 Hack。

你得到一个仅由 0011 组成的二进制字符串 s1s2sns_1s_2\ldots s_n。你可以进行 n2\lfloor \frac{n}{2} \rfloor 次操作。第 xx 次操作中,你可以进行如下操作:

  • 选择一个整数 ll,其中 0lnx0 \leq l \leq n-x。如果 l=0l=0,则不进行任何操作。否则,将 sls_lsl+xs_{l+x} 两个字符都进行翻转。即对于每个字符,如果它是 00,则变为 11;如果它是 11,则变为 00

你的任务是设计一系列操作,使得最终二进制字符串中剩余的 11 的数量最多为 1515。可以证明,在本题的限制条件下,始终存在这样的方案。

输入格式

每组测试数据包含多个测试用例。第一行包含测试用例个数 tt1t1051 \leq t \leq 10^5)。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn3n21063 \leq n \leq 2\cdot 10^6)。

每个测试用例的第二行包含一个二进制字符串 s1s2sns_1s_2\ldots s_nsi{0,1}s_i \in \{0,1\})。

保证所有测试用例中 nn 的总和不超过 21062\cdot10^6

输出格式

对于每个测试用例,输出一行包含 n2\lfloor\frac{n}{2}\rfloor 个数字,分别表示第 1,2,,n21,2,\ldots,\lfloor\frac{n}{2}\rfloor 次操作选择的 ll(满足 0lxnx0 \leq l_x \leq n-x)。需要保证所有操作结束后,最终字符串中最多剩余 151511

如果有多种方案,可以输出任意一种。

输入输出样例

  • 输入#1

    6
    3
    000
    4
    1101
    5
    11101
    9
    111111111
    10
    1111111011
    15
    110011101010100

    输出#1

    0 
    1 1
    1 3 
    6 2 0 2 
    1 0 0 0 0
    13 6 8 5 2 8 1

说明/提示

以第四个测试用例为例:

  • 初始字符串 $s=$111111111。由于 n=9n=9,所以可执行 92=4\lfloor\frac{9}{2}\rfloor=4 次操作。
  • 第一次操作选 l=6l=6,因此翻转下标 666+1=76+1=7 的字符。此时 $s=$111110011。
  • 第二次操作选 l=2l=2,因此翻转下标 222+2=42+2=4 的字符。此时 $s=$101010011。
  • 第三次操作选 l=0l=0,因此不进行任何操作。
  • 第四次操作选 l=2l=2,因此翻转下标 222+4=62+4=6 的字符。此时 $s=$111011011。
  • 最终字符串中有 7711,且 7157 \leq 15,所以该解是正确的。
首页