QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 512 MB 總分: 110

#17596. 宠物

统计

青蛙 Maša 身处一个由 $n$ 行 $m$ 列组成的矩阵表示的湖泊中。矩阵中的单元格被标记为 0(水)或 1(睡莲)。从一朵睡莲出发,Maša 可以跳到同一行或同一列的任何其他睡莲上。如果 Maša 在上一次跳跃中改变了她所在的列(即进行了水平跳跃),那么在下一次跳跃中她必须改变她所在的行(即进行垂直跳跃)。如果她在上一次跳跃中改变了她所在的行,那么在下一次跳跃中她必须改变她所在的列。当 Maša 从她当前所在的睡莲上跳走后,该睡莲就会下沉,不能再次被跳上。

Maša 喜欢玩耍,她希望在她的路径上总共访问 5 朵睡莲(包括起点睡莲)。

请帮助她计算,如果她可以选择任意一朵睡莲作为起点,她有多少种不同的跳跃方案。如果两条路径的第一、第二、第三、第四或第五朵睡莲的位置不同,则认为这两条路径是不同的。

输入格式

第一行包含自然数 $n$ 和 $m$($1 \le n, m \le 2000$),含义如题目描述中所述。

接下来的 $n$ 行中,每行包含 $m$ 个字符,字符为 01,表示湖泊的单元格。

输出格式

输出一个整数,表示题目描述中问题的答案。

子任务

子任务 分值 数据范围
1 8 $n, m \le 4$
2 27 $n, m \le 10$
3 58 $n, m \le 400$
4 17 无附加限制

样例

输入样例 1

2 3
111
110

输出样例 1

4

输入样例 2

4 4
1111
1111
1111
1111

输出样例 2

2304

输入样例 3

2 5
11110
01111

输出样例 3

48

说明

样例 1 解释:

4 种可能的睡莲跳跃路径为:

  • $[1, 1] \to [2, 1] \to [2, 2] \to [1, 2] \to [1, 3]$
  • $[1, 2] \to [2, 2] \to [2, 1] \to [1, 1] \to [1, 3]$
  • $[1, 3] \to [1, 2] \to [2, 2] \to [2, 1] \to [1, 1]$
  • $[1, 3] \to [1, 1] \to [2, 1] \to [2, 2] \to [1, 2]$

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.