CF775A University Schedule
题目描述
在这个问题中你会看到一张大学课程表(包括教授和学生组)。一周有 $6$ 天会上课,每天最多上 $7$ 节课(一天中的每一节课从 $1$ 到 $7$ 标号)。
已知此大学内有 $n$ 名学生,$m$ 名教授,$a$ 个教室。你会得到一份二维的表格($n \times m$ 大小),内容布置如下:第 $i$ 行第 $j$ 列的数值就是第 $j$ 号教授在一周内要给第 $i$ 个学生组上的课的数量。
你所输出的课程表必须要满足上述安排要求。
这里还有一些其他课程表应满足的条件:同一个教授同一时间只能上 $1$ 节课,相似的,同一个学生组同一时间也只能听 $1$ 节课。
现定义一个疲劳函数 $f$(fatigue function)(适用于教授和学生组)。
对于一个教授来说,他的疲劳函数应通过如下方式计算:在 $6$ 天当中的第 $i$ 天,$x$ 代表那天教授上的第一节课的标号,$y$ 代表他上的最后一节课的标号,则那一天教授的疲劳函数增加了 $(2+y-x+1) \times (2+y-x+1)$。
当然如果那天教授没有课,他的疲劳函数不会变化。
相似的,对于一个学生组来说,他们的疲劳函数应通过如下方式计算:在 $6$ 天当中的第 $i$ 天,$x$ 代表那天学生组听的第一节课的标号,$y$ 代表他们听的最后一节课的标号,则那一天他们的疲劳函数增加了 $(2+y-x+1) \times (2+y-x+1)$。
当然如果那天学生组没有课,他们的疲劳函数不会变化。
所以,$f$ 就等于 $n$ 个学生与 $m$ 个教授各自的疲劳函数之和。
你的任务就是安排一张课程表,使得 $f$ 的值最小。
评判安排好了这道题的一些答案。对于每一个测试点你会得到一定的分数,等同于评判给出的 $f$ 值与你求出的 $f$ 值之商乘 $100$。举例:评判给出的 $f$ 为 $p$ 而你给出的 $f$ 为 $q$,则你得到的分数为 $100 \times \frac{p}{q} $(注意:$p,q$ 均为真实的数字)。
此分数会加到你的总分中,你的目标就是尽可能拿到多的分数。
输入格式
第一行为三个正整数 $n,m,a$($1 \le n,m,a\le60$),含义已在上文表述。
接下来 $n$ 行每行包含 $m$ 个由 $0$ 至 $24$ 的正整数,第 $i$ 行的第 $j$ 个数代表一周之内第 $j$ 个教授必须要给第 $i$ 个学生组上的课数。
保证每一个教授和学生组一周要上的课不超过 $24$ 节,以及总课数不会多于用 $a$ 个教室在一周之内能上的课的最多数量的 $75\%$(译注:即你可以认为每一节课都可以上到)。每一个输入都满足以上特征。
输出格式
第一行输出疲劳函数 $f$ 的最小值。
接下来是一个空行。
接下来根据组号从小到大输出课程表。对于每一组输出 $7$ 行,每行 $6$ 个数据。令第 $i$ 行 $j$ 列的数据为 $x$。如果这一组第 $j$ 天没有第 $i$ 节课, $x$ 必须为 $0$。否则 $x$ 就为要上这节课的教授编号。
同时进行的课总数必须严格控制在 $a$ 以内。
用空行分割两个课程表。
说明/提示
During the main part of the competition (one week) you solution will be judged on $ 100 $ preliminary tests. The first $ 10 $ preliminary tests are available for download by a link .
After the end of the contest (i.e., a week after its start) the last solution you sent (having positive score) will be chosen to be launched on the extended final tests.