QOJ.ac

QOJ

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

#13498. Skandi

统计

Dragica 是当地一支半职业保龄球队的队长,她是一位热情的厨师,也可能是克罗地亚最好的填字游戏玩家之一。一个填字游戏由 $N \times M$ 个方格组成,排列成 $N$ 行 $M$ 列。其中一些方格是空的(需要通过回答问题来填入字母),另一些方格是已填充的。已填充的方格最多包含两个问题,分别需要向右水平回答或向下垂直回答。问题的答案会写在空方格中,直到遇到填字游戏的边界或另一个初始已填充的方格为止。如果一个初始已填充的方格右侧存在方格且该方格为空,则它包含一个水平问题。类似地,如果一个初始已填充的方格下方存在方格且该方格为空,则它包含一个垂直问题。

Dragica 通常知道填字游戏所有问题的答案,但她希望阅读并回答尽可能少的问题,同时仍能解决整个填字游戏(即每个空方格都必须被至少一个回答了的问题覆盖)。请帮助她实现这一目标。

输入格式

第一行包含整数 $N$ 和 $M$($2 \le N, M \le 500$),含义如题面所述。

接下来的 $N$ 行,每行包含 $M$ 个字符 01。其中 0 表示需要通过回答问题来填充的空方格,1 表示初始已填充的方格(如题面所述,它最多可包含两个问题)。第一行和第一列将全部由字符 1 填充。

保证输入中至少包含一个字符 0

输出格式

第一行输出为了解决整个填字游戏所需回答的最少问题数。我们将该数量记为 $X$。

接下来的 $X$ 行,每行描述一个需要回答的问题。问题的描述格式应为 R C direction,其中 $R$ 是该问题所在方格的行号,$C$ 是列号,directionDESNO(克罗地亚语中的“向右”,代表水平问题)或 DOLJE(克罗地亚语中的“向下”,代表垂直问题)。

如果存在多个解,输出其中任意一个。

子任务

子任务 分值 限制
1 18 字符为 1 的方格最多有 9 个
2 32 $N \le 500$ 且 $M \le 10$
3 60 无附加限制

如果你的程序在某个子任务的所有测试点中,第一行(最少问题数 $X$)输出正确,但某些测试点的后续行输出不正确,你将获得该子任务 50% 的分数。

样例

输入样例 1

4 5
11111
10000
10000
10000

输出样例 1

3
2 1 DESNO
3 1 DESNO
4 1 DESNO

输入样例 2

6 4
1111
1011
1000
1011
1010
1000

输出样例 2

4
1 2 DOLJE
4 4 DOLJE
5 3 DOLJE
3 1 DESNO

输入样例 3

9 8
11111111
10000000
10001000
10010001
11100001
10100110
10001000
10100001
10010001

输出样例 3

14
5 2 DOLJE
5 8 DOLJE
8 3 DOLJE
2 1 DESNO
3 1 DESNO
3 5 DESNO
4 1 DESNO
4 4 DESNO
5 3 DESNO
6 3 DESNO
7 1 DESNO
7 5 DESNO
8 3 DESNO
9 4 DESNO

说明

第三个样例解释:

与该样例等价的真实填字游戏示例如下图所示。初始已填充的方格被染成黑色,包含至少一个问题的方格被编号。在谜题下方,你可以看到需要向右解决的问题(“Across”列)和需要向下解决的问题(“Down”列)。请注意,某些初始已填充的方格不包含任何问题,某些包含单个问题(例如 8 和 13),而某些包含两个问题(例如 10 和 12)。为了解决这个填字游戏,你至少需要知道输出中列出的 14 个问题的答案。你能解决它吗?

第三个样例对应的填字游戏示例

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.