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