QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 512 MB 満点: 100

#4297. 宜家恶作剧

統計

知名视频博主 Pasha 决定制作一个恶搞视频以增加他的订阅量。他选择了一家著名的家具店 IKEA 作为拍摄地点。

商店的一个大厅可以表示为一个 $n \times m$ 的网格。一些网格单元被沙发占据。目前所有的沙发都是折叠状态,因此每个沙发恰好占据两个相邻的单元格。没有两个沙发重叠,所以每个单元格最多被一个沙发占据。未被占据的单元格为空。

Pasha 决定尽可能多地展开沙发,以增加在大厅中行走的难度,并捕捉顾客的反应。当一个沙发被展开时,它会占据一个 $2 \times 2$ 的正方形区域,该区域包含最初被该沙发占据的两个单元格,以及另外两个由沙发展开方向唯一确定的单元格。

请帮助 Pasha 确定可以展开的沙发的最大数量,并输出应该展开哪些沙发的指令。

输入格式

第一行包含两个整数 $n$ 和 $m$ — 网格的大小 ($1 \le n, m \le 1000$)。

接下来的 $n$ 行描述了大厅。每行包含 $m$ 个字符。字符 “.” 表示空单元格。被沙发占据的单元格用小写或大写英文字母表示。同一个沙发占据的两个单元格用相同的字符表示。两个相邻沙发的单元格用不同的字符表示。如果沙发用小写字母表示,它会向上或向左展开。如果沙发用大写字母表示,它会向下或向右展开。

输出格式

第一行应包含一个整数 — 可以展开的沙发的最大数量。

接下来的 $n$ 行应包含 $m$ 个字符 — 展开沙发后的大厅描述。字符 “.” 表示空单元格。被沙发占据的单元格应由数字表示。同一个沙发占据的单元格应由相同的数字表示。两个相邻的沙发应由不同的数字表示。

样例

样例输入 1

4 4
.AA.
A..a
A..a
.aa.

样例输出 1

2
.11.
0022
0022
.11.

样例输入 2

3 4
.XX.
....
YYZZ

样例输出 2

1
.00.
.00.
1122

样例输入 3

3 4
.XX.
....
yyzz

样例输出 3

2
.00.
1122
1122

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.