#6920. C.涂鸦连线(Doodle)

C.涂鸦连线(Doodle)

C.涂鸦连线(Doodle)

题目描述

小明在一张 (R\times C) 的方格纸上涂黑了若干格。画作中存在一条由连续黑格组成的路径,从左上角 ((0,0)) 连接到右下角 ((R-1,C-1)),称为对角路径。

两个方格共享一条边时才视为相邻。对角路径满足:

  • 起点和终点各恰好与一个黑格相邻;
  • 路径中间的每个黑格都恰好与两个黑格相邻;
  • 路径中不会出现 (2\times2) 的区域全部为黑格。

方格纸上还可能有不属于这条路径的黑格。请计算对角路径包含的黑格数量。

方格纸中的对角路径包含 (17) 个黑格】

输入格式

第一行包含两个整数 (R,C)((1\le R,C\le20)),表示方格纸的行数和列数。

接下来 (R) 行,每行包含 (C) 个整数,相邻整数以空格分隔:

  • 0:该格没有涂黑;
  • 1:该格已涂黑。

输出格式

输出一个整数,表示从左上角到右下角的对角路径包含的黑格数量。

样例 1

输入

6 6
1 0 0 0 0 0
1 1 1 1 0 0
0 0 0 1 0 0
0 0 0 1 0 0
0 0 0 1 1 0
0 0 0 0 1 1

输出

11

样例 2

输入

8 8
1 1 1 0 1 0 0 0
0 0 1 0 1 1 1 1
0 0 1 1 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 0
1 1 0 1 0 1 1 1
0 1 0 1 1 1 0 1
0 1 0 0 0 0 0 1

输出

17

评分说明

每组包含多笔测试数据,只有答对该组的全部数据才能获得对应分数。

测试组 分值 限制
第一组 20 分 除对角路径外,没有其他黑格
第二组 80 分 无特殊限制
测试点编号 层级 数据规模 特殊性质 标准输出 覆盖目的
1 弱数据 1×1 起点即终点,起点值为 0 1 最小规模;验证程序不检查起点值
2 1×5 单行全为 1 5 连续向右移动;覆盖单行边界
3 正常数据 5×5 折线路径,包含向下、向右、向上移动 13 检查四方向移动及已访问位置清零
4 7×7 左右交替的蛇形路径 25 覆盖向左移动、多次转向和移动优先级
5 极限数据 20×20 接近最长的蛇形路线 191 覆盖数组最大规模及长路径计数