P7876 「SWTR-7」Scores(hard version)
题目背景
#### 本题是 Scores 的 hard 版本。注意题目限制与 [easy](https://www.luogu.com.cn/problem/P7873) 版本不同。
#### 请注意特殊的时空限制。
题目描述
小 A 的班上有 $n$ 个学生。最近他们进行了一场考试,共有 $m$ 个学科。第 $i$ 个学生第 $j$ 门学科的得分为**整数** $s_{i,j}\ (0\leq s_{i,j}\leq 100)$。
同学们很重视自己在班上的排名,所以他们经常会比较自己和别的同学的分数。如果一个学生 $i$ **至少有一门学科**的分数比 $j$ **高**,ta 就会觉得自己不比 $j$ 差;相反,如果 ta **每门学科**的分数都比 $j$ **低**,ta 就会觉得自己被 $j$ 吊打了。
实际上,**上述两种情况并不是严格意义上相反的**。但是喜好八卦的小 A 打听到了每两个同学之间的分数情况,他惊讶地发现:**一个同学 $i$ 要么被 $j$ 吊打,要么不比 $j$ 差。** 同时,**如果 $i,j$ 被同一个人吊打,或同时吊打同一个人,则他们之间也有一方被另一方吊打**。我们用一个矩阵 $a_{i,j}\ (i\neq j)$ 来描述小 A 知道的同学们之间的分数关系:$a_{i,j}=0$ 表示 $i$ 被 $j$ 吊打;$a_{i,j}=1$ 表示 $i$ 不比 $j$ 差。
小 A 想知道这种情况会不会发生,即是否存在这样一张 $n\times m$ 的成绩表 $s$ 满足矩阵 $a$ 所描述的分数关系,从而确定有没有撒谎的同学。如果存在 $s$,请先输出 $\texttt{YES}$,再**任意**输出一种符合要求的成绩表;否则输出 $\texttt{NO}$。
注意:这里所求的 $s$ 所需满足的条件是 $a$ 的限制,而**不只是**小 A 所发现的性质,因为**他发现的性质已经在给出的 $a$ 中体现**。
输入格式
无
输出格式
无
说明/提示
**「Special Judge」**
**本题使用 Special Judge。请认真阅读输出格式,输出格式有误可能导致 UKE 或 WA。**
SPJ 首先会判断你的第一行输出是否与答案相同。
如果相同且答案为 $\texttt{YES}$,则 SPJ 会判断你的输出是否符合所有限制。
如果有解且你输出 $\texttt{YES}$,但给出方案错误,你将获得该测试点 $50\%$ 的分数。
你需要满足的限制如下:
- $0\leq s_{i,j}\leq 100$。
- 对于任意 $i,j\ (i\neq j)$,若 $a_{i,j}=0$,则对于任意 $k\ (1\leq k\leq m)$,有 $s_{i,k}s_{j,k}$。
你需要注意的是,所有输出都应严格符合输出格式。如果你对答案的存在性判断正确,但是输出方案时 $s_{i,j}100$,SPJ 会判定为 WA,得 $0$ 分,而不是 $50\%\ \times$ 该测试点分数。
**「数据范围与约定」**
本题共有 6 个测试点。
- Testcase #0(1 point):是样例。
- Testcase #1(10 points):$n=1$。
- Testcase #2(10 points):$m=1$。
- Testcase #3(30 points):$m=2$。
- Testcase #4(20 points):$a_{i,j}=1\ (i\neq j)$。
- Testcase #5(29 points):无特殊限制。
对于 $100\%$ 的数据,$1\leq n,m\leq 100$,$a_{i,j}\in\{0,1\}$,$T=50$(除 Testcase #0)。
对于 $a$ 的限制:若 $a_{i,j}=a_{i,k}=0$,则 $a_{j,k}$ 和 $a_{k,j}$ 中至少有一个为 $0$;若 $a_{i,k}=a_{j,k}=0$,则 $a_{i,j}$ 和 $a_{j,i}$ 中至少有一个为 $0$。
对于所有测试点,**时间限制 500ms,空间限制 16MB。**
**「题目来源」**
[Sweet Round 07](https://www.luogu.com.cn/contest/51773) A2。
idea & solution & data:[Alex_Wei](https://www.luogu.com.cn/user/123294);验题:[chenxia25](https://www.luogu.com.cn/user/138400)。