#L3269. 「COCI 2020.3」Skandi

「COCI 2020.3」Skandi

题目描述 译自 COCI 2019/2020 Contest #6 T4. Skandi

Dragica 不仅是当地一个半专业保龄球队的队长,还是一位充满激情的厨师。除此之外,他还是克罗地亚顶尖的填字游戏(crossword)玩家。

填字游戏在一个 N×MN\times M 的网格上进行。游戏开始时,部分格子已经填上了字母,这些格子至多作为两道题的起点。玩家需要根据给出的提示,在剩下的格子中水平向右或竖直向下填写答案。

一道题的定义:从该题的起点出发,沿着指定方向(右或下),直到网格边界或遇到另一个起点格子(包含字母的格子)之前的连续空格子部分。

如果某个起点格子的右边一格是空格(0),那么该起点格子在水平方向上存在一道题。

如果某个起点格子的下面一格是空格(0),那么该起点格子在竖直方向上存在一道题。

Dragica 知道所有题的答案,但他想让你帮他找出:完成这个填字游戏最少需要回答多少道题,并输出任意一组这样的题。

输入格式 第一行两个空格分隔的整数 NN, MM,含义见题目描述。

接下来 NN 行,每行 MM 个字符 0 或 1:

0 表示这是一个待填充的空格

1 表示该格已填有字母,是至多两道题的起点

保证输入至少有一个 0,且第一行和第一列均为 1。

输出格式 第一行输出完成该次填字游戏的最小答案数 XX

接下来 XX 行,每行格式为:

text r c dir 其中 rr 表示题目的行号(从 11 开始),cc 表示题目的列号(从 11 开始),dirdir 是 DESNO(克罗地亚语的“右”)或 DOLJE(克罗地亚语的“下”)之一,表示方向。

如果有多解,输出任意一个。

样例 1 输入:

text 4 5 11111 10000 10000 10000 输出:

text 3 2 1 DESNO 3 1 DESNO 4 1 DESNO 解释:

22 行第 11 列向右的题覆盖第 22 行的所有空格。

33 行第 11 列向右的题覆盖第 33 行的所有空格。

44 行第 11 列向右的题覆盖第 44 行的所有空格。

不需要向下的题。

样例 2 输入:

text 6 4 1111 1011 1000 1011 1010 1000 输出:

text 4 1 2 DOLJE 4 4 DOLJE 5 3 DOLJE 3 1 DESNO 样例 3 输入:

text 9 8 11111111 10000000 10001000 10010001 11100001 10100110 10001000 10100001 10010001 输出:

text 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 数据范围 对于 100100% 的数据:

2N,M5002\le N, M\le 500

各子任务限制:

子任务 分值 特殊限制 1 16 至多 99 个格子开始前填了字符 2 30 N500N\le 500, M10M\le 10 3 54 无特殊限制