P11883 [RMI 2024] 信号 / Signals

题目背景

2025/04/16:加入一份 hack 数据(#34)([source](https://www.luogu.com.cn/ticket/XQRX670885))。

题目描述

给定长度为 $n$ 的非负整数序列 $a_1,a_2,\ldots,a_n$ 和正整数 $k$。 你需要构造一个长度为 $n$ 的非负整数序列 $b_1,b_2,\ldots,b_n$,满足: - $\forall 1\le i\le n$,$b_i\in [0, 2^k)$; - $\forall 1\le i\le n$,$\operatorname{popcount}(b_i \oplus b_{i\bmod n+1})=a_i$。 或者报告不存在合法解。 这里,$\oplus$ 代表按位异或运算,$\operatorname{popcount}(n)$ 表示非负整数 $n$ 二进制表示下 $1$ 的个数。 特别地,如果你正确地判断了解的存在性,也可以得到部分分,见【计分方式】。

输入格式

**本题单个测试点内含有多组测试数据。** 第一行,正整数 $T$,表示测试数据组数。 接下来描述 $T$ 组测试数据: 每组数据第一行,两个正整数 $n,k$。 每组数据第二行,$n$ 个非负整数 $a_1,a_2,\ldots,a_n$。

输出格式

对于每组数据,如果无解,输出一行一个 $\texttt{NO}$; 否则输出 $(n+1)$ 行,第一行输出 $\texttt{YES}$,接下来 $n$ 行,第 $i$ 行一个长度为 $k$ 的 $\texttt{01}$ 串,表示 $b_i$ 二进制表示下的低 $k$ 位。

说明/提示

### 数据范围 对于 $100\%$ 的数据,保证: - $1\le T\le 10^5$; - $2\le n$; - $1\le k$; - $2\le nk,\sum nk\le 5\times 10^6$; - $0\le a_i\le k$。 --- - $\text{Subtask 0 (0 pts)}$:样例。 - $\text{Subtask 1 (5 pts)}$:$T,n,k\le 5$。 - $\text{Subtask 2 (2 pts)}$:$k=1$。 - $\text{Subtask 3 (8 pts)}$:$k=2$。 - $\text{Subtask 4 (32 pts)}$:$a_i\le k/2$。 - $\text{Subtask 5 (24 pts)}$:$n\le 5\times 10^4$,$k\le 20$。 - $\text{Subtask 6 (29 pts)}$:无额外约束。 ### 计分方式 如果你正确地判断了解的存在性,但是构造的解不正确,你可以获得 $50\%$ 的分数。 如果你只想获得 $50\%$ 的分数,也要保证输出格式正确,否则将无法得分。 每个子任务的分数为其中每个测试点分数的最小值。