杜绝作弊
测试数据来自 system/3278
时间限制:1秒 内存限制:256M
【题目描述】
NOI笔试要开始了,考室已经准备就绪。我们可以将考室视为一个 \(n \times m\) 的方阵,每个单元格代表一个座位。方阵的每个单元格可以取以下三种值之一:
- \(2\) 表示已被大聪明的选手占用的座位。这些选手很负责,监考老师不担心他们。
- \(1\) 表示监考老师标记为禁止入座的座位。这些座位无人就坐。
- \(0\) 表示空座位,可供小聪明的选手就坐。
小聪明选手尚未到达,但即将到来。监考老师可以决定哪些空座位将由小聪明选手占据。
大聪明的选手从不作弊,但如果他们与小聪明选手相邻,则可能导致小聪明选手作弊。如果一个小聪明选手至少有一个邻座(上、下、左、右四个方向之一),无论是大聪明的选手还是其他小聪明选手,该小聪明选手就会作弊。
请确定考室中可以就坐的选手总数(包括大聪明的选手和小聪明选手)的最大值,使得考试期间不会发生作弊行为。
【输入格式】
第一行包含自然数 \(n, m\)(\(1 \le n, m \le 80\)),含义如题目描述所述。
接下来的 \(n\) 行,每行包含 \(m\) 个字符,每个字符为 \(0\)、\(1\) 或 \(2\),表示题目中描述的矩阵。
【输出格式】
输出一行一个整数,表示考室中可以就坐且考试期间不发生作弊行为的选手总数的最大值。
【输入输出样例1】
Input
4 4
0100
0202
1000
2120
Output
6
【输入输出样例1】
Input
4 4
0000
0000
0000
0000
Output
8
【样例说明】
监考老师将在第 1 行和第 3 行的奇数列安排选手,在第 2 行和第 4 行的偶数列安排选手。这样安排可以确保没有选手会作弊。
【测试点性质】
| 子任务 | 分值 | 约束条件 |
|---|---|---|
| 1 | 8 | \(n, m \le 4\) |
| 2 | 15 | 矩阵中的所有单元格均为 \(0\)。 |
| 3 | 16 | \(n = 2\) |
| 4 | 52 | \(n \le 15\) |
| 5 | 19 | 无额外限制。 |
【来源】
Mr.he