时间管理与多人运动¶
预估时间限制:4.5 秒。内存限制:512 MB。
实际时限以标准程序在目标环境的最慢用例中位时间乘以 \(2\) ,按 \(0.5\) 秒向上取整。参考环境见评测说明。
背景故事¶
——众所周知,CCPC/ICPC 是一系列多人运动比赛。
退役后,你来到一所文理学院,担任一支 ACM 队的队长。你需要安排训练时段,让队伍参加一系列比赛。凭借神乎其神的预测能力,你已经知道在每个时段参加每场比赛能有多大收获。不过,每个时段必须恰好参加一场比赛,每场比赛也必须恰好参加一次,因此时段数与比赛数相同。
不同比赛的收获不能简单相加,因此你把收获划分为 0 到 70 共 71 个等级。你希望先让最高等级的收获尽可能多,再依次考虑较低等级。请给出最优安排下各等级收获的次数。
形式化问题描述¶
有 \(n\) 个时段和 \(n\) 项比赛。每个时段必须安排恰好一项比赛,每项比赛必须恰好安排一次。在时段 \(i\) 安排比赛 \(j\) ,获得的收益等级为 \(a_{ij}\) ,是零到七十之间的整数。
令 \(c_g\) 为等级 \(g\) 的收益出现次数。选择一种安排,使序列
字典序最大,并输出这个序列。即先最大化七十级次数,在此基础上最大化六十九级次数,依此类推。若 \(n=0\) ,所有次数均为零。
输入格式¶
第一行一个整数 \(n\) .接下来 \(n\) 行,每行 \(n\) 个整数;第 \(i\) 行第 \(j\) 个整数是 \(a_{ij}\) .
输出格式¶
输出一行七十一个整数,依次为最优的 \(c_{70},c_{69},\ldots,c_0\) ,相邻整数用一个空格分隔。
样例¶
样例 1¶
输入¶
5
5 5 5 5 5
5 3 2 1 1
2 2 2 2 2
2 5 2 5 2
4 4 1 1 1
输出¶
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 1 0 0
样例 2¶
输入¶
0
输出¶
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
样例 3¶
输入¶
3
70 69 0
70 0 69
0 70 68
输出¶
2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
样例解释¶
样例一可获得三次五级、一次四级、一次二级收益。样例二没有比赛,仍输出七十一个零。样例三可获得两次七十级和一次六十九级收益。
数据范围与保证¶
\(0\le n\le500\) ,\(0\le a_{ij}\le70\) .
| 分值比例 | 额外条件 |
|---|---|
| 100% | 无额外条件 |