监考安排

Problem H: 监考安排
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 216 Solved: 71
[Submit][Status][Web Board]
Description
马上就要期中考试了,自然,在每个考场都要放监考老师,但是这些监考老师非常严格,而且只看前后、左右,别的地方都不管——而且能透过学生看学生另一边的学生(即如果老师站在教室第X排第Y个时,他只能看到第X排学生和每排第Y个学生的考试情况——即是否在作弊)。但是学校为了节省教室,所以把很多的学生聚集在一起考试,而且这些老师非常懒——他们不会站着,只会坐到那些空位子上去。为了控制整个考场,所以必须多放些监考老师,但监考老师一旦发现某人在东张西望,就会把那家伙拖出去。所以每行每列最多只能放一个监考老师。只是求
每个考场内最多能放多少个监考老师。
Input
第一行,两个数N,M分别表示考场有N排,每排M个人(0≤N,M≤200)。
接下来一个N*M的矩阵,0表示有学生坐着,1表示没有学生坐着。监考老师只能坐那些没有学生坐着的地方。
Output
一个数,在这个考场里最多能放多少个监考老师。
Sample Input
5 5
0 0 0 1 0
0 1 0 0 0
1 0 0 0 0
0 0 1 0 0
0 0 0 0 1
Sample Output
5
【样例说明】
五个老师刚好坐在(1,4)、(2,2)、(3,1)、(4,3)、(5,5),
能够监视整个考场,并且不会引起老师们的混乱
HINT
[Submit][Status]
相信很多人看到这题第一反应都是写dfs,可是,如果某些小盆友不会写dfs怎么办???没事,小编在这给大家另一种方法——整个代码只需12行。
还是继续分析一下这题
很快,我们可以看到这样一句话
每行每列最多只能放一个监考老师
这句话很重要,就用样例来说吧
输入:
5 5
0 0 0 1 0
0 1 0 0 0
1 0 0 0 0
0 0 1 0 0
0 0 0 0 1
输出:
5
这里输出的ans=min(5,5)=5;
再举例证明
输入:
6 5
0 0 0 1 0 0
0 1 0 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0
输出:
5
这次,输出的ans为ans=min(6,5)=5;
再举个例子
输入:
5 6
0 0 0 1 0 0
0 1 0 0 0 0
1 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
输出:
5
这次,输出的ans为ans=min(5,6)=5;
然后,我们可以发现输出的ans,绝对是n和m中的一个。而且绝对是ans=mim(n,m);而且,当阿拉写到这的时后,也不禁吐嘈了一句,“这题特么和学生有什么关系???”
经上述推论,可得出如下代码
监考安排