CF1227G Not Same
题目描述
给定一个整数数组 $a_1, a_2, \dots, a_n$,其中 $a_i$ 表示第 $i$ 个位置上的方块数量。保证 $1 \le a_i \le n$。
每次操作,你可以选择数组中的一个下标子集,并在这些下标对应的位置各移除一个方块。不能在没有方块的位置移除方块。
你每次选择的子集必须互不相同(唯一)。
你需要在最多 $n+1$ 次操作内移除数组中的所有方块。可以证明答案一定存在。
输入格式
第一行包含一个整数 $n$($1 \le n \le 10^3$),表示数组的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$),表示第 $1$ 到第 $n$ 个位置上的方块数量。
输出格式
第一行输出一个整数 $op$($0 \le op \le n+1$),表示操作次数。
接下来的 $op$ 行,每行输出一个长度为 $n$ 的二进制字符串 $s$。如果 $s_i = $ '0',表示第 $i$ 个位置不在本次选择的子集中;如果 $s_i = $ '1',表示第 $i$ 个位置在本次选择的子集中。
所有二进制字符串必须互不相同,并且对于每个 $i$,$a_i$ 应等于所有选择的二进制字符串中 $s_i$ 的和。
如果有多组答案,输出任意一组均可。
可以证明答案一定存在。
说明/提示
在第一个样例中,方块数量的变化如下:
$\lbrace 5,5,5,5,5 \rbrace \to \lbrace 4,4,4,4,4 \rbrace \to \lbrace 4,3,3,3,3 \rbrace \to \lbrace 3,3,2,2,2 \rbrace \to \lbrace 2,2,2,1,1 \rbrace \to \lbrace 1,1,1,1,0 \rbrace \to \lbrace 0,0,0,0,0 \rbrace$。可以注意到每次操作都是不同的。
由 ChatGPT 4.1 翻译