#P11883. [RMI 2024] 信号 / Signals

    ID: 13318 远端评测题 1500ms 512MiB 尝试: 0 已通过: 0 显示难度省选/NOI− 上传者: 标签>2024Special JudgeRMI(罗马尼亚)

[RMI 2024] 信号 / Signals

背景

2025/04/16:加入一份 hack 数据(#34)(source)。

题目描述

给定长度为 nn 的非负整数序列 a1,a2,…,ana_1,a_2,\ldots,a_n 和正整数 kk。

你需要构造一个长度为 nn 的非负整数序列 b1,b2,…,bnb_1,b_2,\ldots,b_n,满足:

  • ∀1≤i≤n\forall 1\le i\le n,bi∈[0,2k)b_i\in [0, 2^k);
  • ∀1≤i≤n\forall 1\le i\le n,$\operatorname{popcount}(b_i \oplus b_{i\bmod n+1})=a_i$。

或者报告不存在合法解。

这里,⊕\oplus 代表按位异或运算,popcount⁡(n)\operatorname{popcount}(n) 表示非负整数 nn 二进制表示下 11 的个数。

特别地,如果你正确地判断了解的存在性,也可以得到部分分,见【计分方式】。

输入格式

本题单个测试点内含有多组测试数据。

第一行,正整数 TT,表示测试数据组数。

接下来描述 TT 组测试数据:

每组数据第一行,两个正整数 n,kn,k。

每组数据第二行,nn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

对于每组数据,如果无解,输出一行一个 NO\texttt{NO};

否则输出 (n+1)(n+1) 行,第一行输出 YES\texttt{YES},接下来 nn 行,第 ii 行一个长度为 kk 的 01\texttt{01} 串,表示 bib_i 二进制表示下的低 kk 位。

3
5 3
2 1 3 0 2
10 6
3 2 1 4 3 2 1 3 2 1
2 3
2 1
YES
000
110
010
101
101
YES
000000
111000
111110
111111
000011
111011
011111
111111
000111
000001
NO

提示

数据范围

对于 100%100\% 的数据,保证:

  • 1≤T≤1051\le T\le 10^5;
  • 2≤n2\le n;
  • 1≤k1\le k;
  • 2≤nk,∑nk≤5×1062\le nk,\sum nk\le 5\times 10^6;
  • 0≤ai≤k0\le a_i\le k。

  • Subtask 0 (0 pts)\text{Subtask 0 (0 pts)}:样例。
  • Subtask 1 (5 pts)\text{Subtask 1 (5 pts)}:T,n,k≤5T,n,k\le 5。
  • Subtask 2 (2 pts)\text{Subtask 2 (2 pts)}:k=1k=1。
  • Subtask 3 (8 pts)\text{Subtask 3 (8 pts)}:k=2k=2。
  • Subtask 4 (32 pts)\text{Subtask 4 (32 pts)}:ai≤k/2a_i\le k/2。
  • Subtask 5 (24 pts)\text{Subtask 5 (24 pts)}:n≤5×104n\le 5\times 10^4,k≤20k\le 20。
  • Subtask 6 (29 pts)\text{Subtask 6 (29 pts)}:无额外约束。

计分方式

如果你正确地判断了解的存在性,但是构造的解不正确,你可以获得 50%50\% 的分数。

如果你只想获得 50%50\% 的分数,也要保证输出格式正确,否则将无法得分。

每个子任务的分数为其中每个测试点分数的最小值。