QOJ.ac

QOJ

시간 제한: 2.0 s 메모리 제한: 256 MB 총점: 100

#17829. Bombs

통계

Gennadiy 正在玩他最喜欢的游戏。

游戏关卡是一个由正方形单元格组成的网格地图。每个单元格要么是空的,要么填满了泥土。空单元格可以包含关卡的起点(入口)或终点(出口)。玩家可以在空单元格上行走,每次移动可以走到与其相邻且共享边的单元格。玩家不能移动到地图外。

有些关卡无法通过常规手段通过,在这种情况下,需要使用炸弹。炸弹可以附着在泥土上并爆炸,从而清除附近单元格中的泥土。在本题中,假设如果玩家当前所在的单元格与泥土单元格相邻,则玩家可以在其当前所在的单元格中放置炸弹。炸弹爆炸后,爆炸区域内的所有单元格都将变为空单元格,从而可以通行。玩家、关卡起点和关卡终点可以安全地处于爆炸区域内,它们不会受到爆炸的影响。

爆炸区域是一个以炸弹放置单元格为中心的八边形。爆炸区域有两个参数 $P$ 和 $R$,其精确形状定义如下:沿着其外围的边界单元格移动,你必须向上移动 $P$ 次,然后向右上(斜向)移动 $R$ 次,然后向右移动 $P$ 次,然后向右下(斜向)移动 $R$ 次,然后向下移动 $P$ 次,依此类推(即向左下移动 $R$ 次,向左移动 $P$ 次,向左上移动 $R$ 次),直到回到起点单元格。参数在某些取值下的爆炸区域形状如下图所示:

炸弹是有限且宝贵的资源,因此应当节省使用。请帮助 Gennadiy 用最少数量的炸弹通过关卡。

输入格式

输入的第一行包含两个整数 $N$ 和 $M$,分别表示地图的行数和列数($1 \le N, M \le 1500$)。

第二行包含两个整数 $P$ 和 $R$,表示爆炸区域的参数($0 \le P, R \le 1000$)。保证 $P$ 是偶数,且 $P + R > 0$。

接下来是关卡地图,共 $N$ 行,每行包含 $M$ 个字符。每个字符描述了对应单元格的内容:

  • @ — 填满泥土的单元格。
  • . — 空单元格。
  • S — 包含关卡起点的空单元格。
  • E — 包含关卡终点的空单元格。

保证地图中仅包含一个起点单元格和一个终点单元格。

输出格式

输出的第一行包含一个整数 $B$,表示通过关卡所需的最少炸弹数量($B \ge 0$)。

在接下来的 $B$ 行中,按照引爆顺序输出必须放置炸弹的单元格。每行输出两个整数 $u$ 和 $v$,分别表示该单元格的行号和列号($1 \le u \le N, 1 \le v \le M$)。

样例

输入样例 1

9 10
0 1
@@......@@
@@S@@@@...
@@@@@...@.
@@@@@@@@@@
@@@@@@@@@@
.........@
@@@.@@@@..
@...@@@E@.
@@@@@@@@@@

输出样例 1

3
3 7
4 7
8 10

输入样例 2

4 5
2 1
S@@@@
..@@@
@@@@E
@@@@@

输出样例 2

1
2 2

输入样例 3

7 5
4 0
@E@@@
@@.@@
@@@@@
@@@@@
@@...
@@...
@@..S

输出样例 3

2
5 5
2 3

说明

在第一个样例中,爆炸呈十字形,会影响与炸弹单元格共边的单元格。需要两颗炸弹来破坏第 4 行和第 5 行的墙,再需要一颗炸弹来显露终点。

在第二个样例中,爆炸威力足够大,只需一颗炸弹即可炸出一条通道。

在第三个样例中,需要两颗炸弹。注意,禁止将第一颗炸弹放置在单元格 $(6, 4)$,因为该单元格不与泥土相邻。

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.