loj#P4808. 「RMI 2024」Signals

「RMI 2024」Signals

题目描述

题目译自 Romanian Master of Informatics 2024 Day2 T1 「Signals

布加勒斯特国际计算机学院有一套由 NN 台计算机组成的环形网络。每台计算机都按顺序连接成一个圈:第 ii (1i<N)(1 \leq i < N) 台计算机通过链接 ii 与第 i+1i + 1 台相连,而第 NN 台和第 11 台通过链接 NN 连接。

每台计算机有一个由 KK 位信息组成的密钥,用长度为 KK 的二进制字符串表示。每个链接 ii 还有一个安全阈值 WiW_i。通过这个链接连接的两台计算机只有在它们的密钥恰好在 WiW_i 个位上不同时才能通信。

系统管理员不小心丢失了所有密钥,现在需要你的帮助重新生成一组密钥,确保每条链接都能支持通信。

输入格式

输入的第一行包含一个整数 TT,表示需要解决的测试数据组数。接下来是 TT 组测试数据的描述。

每组测试数据的第一行包含两个空格分隔的整数 NNKK。第二行包含 NN 个空格分隔的整数 W1,W2,,WNW_1, W_2, \dots, W_N,表示各链接的安全阈值。

输出格式

依次输出 TT 组测试数据的答案。每组测试数据的答案格式如下:

如果某组测试数据无解,输出一行 NO。否则,第一行输出 YES,接下来的第 22N+1N + 1 行输出一组有效的密钥。每台计算机 ii 的密钥在第 (i+1)(i + 1) 行输出为一个无空格的二进制字符串。

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

对于第一组测试数据,密钥 00011022 个位上不同,11001011 个位上不同,01010133 个位上不同,10110100 个位上不同,10100022 个位上不同,满足所有五个安全阈值。

对于第二组测试数据,无法找到一组密钥满足所有条件,因此输出 NO

数据范围与提示

对于所有输入数据,满足:

  • 1T100 0001 \leq T \leq 100 \ 000
  • 2N2 \leq N
  • 2NK5 000 0002 \leq N \cdot K \leq 5 \ 000 \ 000
  • 0WiK0 \leq W_i \leq K
  • 保证所有测试数据中 NKN \cdot K 的总和不超过 5 000 0005 \ 000 \ 000
  • 如果你能正确判断是否存在解,但输出的密钥不正确(格式正确),仍可获得该子任务 50%50\% 的分数。
  • WmaxW_{max} 为所有 WiW_i 中的最大值。

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制
11 55 T,N,K5T, N, K \leq 5
22 22 K=1K = 1
33 88 K=2K = 2
44 3232 2WmaxK2W_{max} \leq K
55 2424 N50 000,K20N \leq 50 \ 000, K \leq 20
66 2929 无额外限制