题号:NC213481
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
小棋是一个棋类运动的爱好者,他非常喜欢下象棋,有一天,他发明了一种棋,叫作快乐棋。
在快乐棋王国里,有M×N个方格,一些方格放置了棋子O,一些方格被小棋抠掉了(没错,就是抠掉了,没法再放棋子了),另一些方格是空着的(也没有被抠掉)。在玩快乐棋的某一天,小棋心血来潮,他希望放置尽可能多的棋子车,在快乐棋中,车如果碰到同一列或者同一行的视野范围中有另一个车,会立即开展攻击,快乐棋王国就乱套了,小棋不希望快乐棋王国乱套!棋子车只能被放在空着的方格里,如果两个棋子车在同一列或者同一行并且中间没有放置棋子O(棋子O可以挡住棋子车的视线),那么就设定棋子车的视野范围中有另一个车。你的任务是根据给定的初始快乐棋棋盘,计算出可放置多少个车。
输入描述:
第一行两个整数M和N(1≤M,N≤200),表示快乐棋棋盘的规模。
接下来M行N列的整数,描述的是初始的快乐棋棋盘。第i行j列的数用ai,j表示。
ai,j=0,表示方格[i,j]是空着的;
ai,j=1,表示方格[i,j]是被抠掉了的;
ai,j=2,表示方格[i,j]是棋子O。
输出描述:
一行一个整数K,表示最多放置K个车。
示例1
输入
复制
3 4
2 0 0 0
2 2 2 1
0 1 0 2