QOJ.ac

QOJ

时间限制: 2 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#17948. 巧克力怪盗可可 (Bitter)

统计

深受推理小说《巧克力怪盗蕾娜》启发的可可决定模仿小说中的经典场景。具体步骤如下:

  • 步骤 1:首先准备一个大小为 $N \times N$ 的正方形网格状巧克力。这个巧克力可以按 $1 \times 1$ 的单位在任意位置掰下,且已经有一部分被移除了。此时,剩余的单位巧克力至少有 $4$ 个,并且必须连成一块。上下左右相邻的两个单位巧克力是相互连接的,相互连接的单位巧克力集合被称为“一块”。
  • 步骤 2:从这个巧克力中掰下并吃掉一个单位巧克力,使其满足以下条件:

    • 掰下该单位巧克力后,剩余的巧克力仍然连成一块,但在此之后,如果切开任意两个相邻的单位巧克力,都会将其分成 $2$ 块。
  • 步骤 3:喊出蕾娜的经典台词:“这次就放过你,下次一定会把巧克力切成碎片的。”

可可已经准备好了满足步骤 1 条件的巧克力,但她正在苦恼应该掰下哪个位置的单位巧克力才能满足步骤 2 的条件。请帮帮可可。

输入格式

第一行包含一个整数 $N$,表示巧克力的大小。$(2 \le N \le 1\,000)$

接下来的 $N$ 行,每行包含 $N$ 个字符,表示巧克力的状态。每个字符为 #.。如果第 $r$ 行第 $c$ 列的字符为 #,表示该位置有单位巧克力;如果为 .,则表示没有。巧克力的左上角格子为第 $1$ 行第 $1$ 列。

保证所有输入均满足步骤 1 的条件。

输出格式

第一行输出一个整数,表示满足步骤 2 条件的可掰下的不同单位巧克力的数量。

接下来的行中,每行输出一个满足条件的单位巧克力的行号和列号,用空格隔开。输出时,按行号从小到大排序;若行号相同,则按列号从小到大排序。

样例

输入 1

3
###
#.#
###

输出 1

8
1 1
1 2
1 3
2 1
2 3
3 1
3 2
3 3

输入 2

3
##.
###
###

输出 2

1
2 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.