#HK4159. 「JOISC 2024 Day4」乒乓

「JOISC 2024 Day4」乒乓

题目描述

题目译自 JOISC 2024 Day4 T3 「卓球 / Table Tennis

JOI 国正在举行乒乓球比赛。有 NN 只河狸参加,编号为 11NN。此比赛为单循环赛制。

你从 Bitaro 那里得知了比赛结果。

  • 比赛没有平局。
  • 有恰好 MM 种选择三只河狸的方式出现了三方牵制。注意三只河狸 i,j,k (1i<j<kN)i,j,k\ (1\le i<j<k\le N) 出现三方牵制,当且仅当如下两个条件中的恰好一个被满足。
    • 河狸 ii 击败河狸 jj,河狸 jj 击败河狸 kk,河狸 kk 击败河狸 ii
    • 河狸 ii 击败河狸 kk,河狸 kk 击败河狸 jj,河狸 jj 击败河狸 ii

你不知道从 Bitaro 那里获得的信息是否正确,所以你决定找出是否存在一种比赛结果符合从 Bitaro 那里获得的信息。

给出从 Bitaro 那里获得的信息,写一个程序判断是否存在比赛结果符合这个信息,如果存在,找出一种比赛结果。

输入格式

第一行一个整数 QQ,表示场景数。

对于每个场景,一行两个整数 N,MN,M,分别表示河狸数和三方牵制数。

输出格式

对于每个场景,如果存在比赛结果满足信息,先输出一行 Yes。接下来输出 N1N-1 行。第 ii 行输出一个长度为 ii 的且仅包含 01 的字符串 SiS_i。如果 SiS_i 的第 jj 个字符为 0,则表示河狸 i+1i+1 输给了河狸 jj,如果为 1,则表示河狸 i+1i+1 赢了河狸 jj。如果有多种满足条件的结果,输出任意一个均可。

如果不存在比赛结果满足信息,输出一行 No

2
3 1
4 4

Yes
0
10
No

Q=2Q=2 个场景。

在第一个场景的样例输出中,河狸 11 赢了河狸 22,河狸 22 赢了河狸 33,河狸 33 赢了河狸 11。因此,河狸 1,2,31,2,3 出现了三方牵制。没有其他选择三只河狸的方式了,所以有恰好一种方式选择三只河狸会出现三方牵制。

如下是针对场景一的另一个满足条件的输出。

Yes
1
01

场景二中,没有任何比赛结果满足给出信息。因此输出 No

这组样例满足子任务 2,3,4,5,62,3,4,5,6 的限制。

1
5 3

Yes
0
11
001
0101

在第一个场景的样例输出中,河狸 11 赢了河狸 44,河狸 44 赢了河狸 33,河狸 33 赢了河狸 11。因此,河狸 1,3,41,3,4 出现了三方牵制。还有两种其他方式会出现三方牵制:选择河狸 2,3,42,3,4 和选择河狸 3,4,53,4,5。所以有恰好三种方式选择三只河狸会出现三方牵制。

这组样例满足所有子任务的限制。

数据范围与提示

  • 1Q1\le Q
  • 3N50003\le N\le 5\,000
  • 0M16N(N1)(N2)0\le M\le \frac{1}{6}N(N-1)(N-2)
  • QQ 个场景中所有 NN 之和小于等于 50005\,000

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

子任务编号 附加限制 分值
11 MN2M\le N-2 55
22 QQ 个场景中所有 NN 之和小于等于 77 44
33 QQ 个场景中所有 NN 之和小于等于 2020 2323
44 QQ 个场景中所有 NN 之和小于等于 150150 3030
55 QQ 个场景中所有 NN 之和小于等于 600600 1515
66 无附加限制 2323