#P10361. [PA2024] Łamigłówka 3

[PA2024] Łamigłówka 3

题目背景

PA 2024 4C

题目描述

题目译自 PA 2024 Runda 4 Łamigłówka 3

Bytie 喜欢玩手机游戏。然而让他感到恼火的是游戏中经常有其他游戏的广告,并且其中玩游戏的人表现得非常糟糕,广告这样做的目的是让看广告的人感到沮丧,从而产生玩下去的欲望。Bytie 对其中一个广告印象尤为深刻(你可能也看过)。

lam1.png

由于可以从任何事物中汲取灵感,Bytie 决定在上述游戏的基础上出道题。他将选择一块大小为 n×mn\times m 的目标图案,游戏在一块 n×mn\times m 的网格上进行,其中没有任何区域被染色。在一次操作中,他可以选择一行或一列,并将这一行(或列)中的所有方格(注意,这比上面图片中的游戏更自由,因为在上面的游戏中,重复涂色同一单元格时颜色会混合)重新涂成自己选择的颜色。为了使题目更形式化,他还用大写英文字母标注了所有颜色。你能帮他写一个程序,对于他给出的每个网格,给出正确得到目标图案的操作顺序吗?你可以假设输入中最多可以用 n+mn+m 步操作得到目标图案。

输入格式

第一行两个整数 nnm (1n,m2000)m\ (1\le n,m\le 2\,000),分别表示网格的行数和列数。

接下来 nn 行,每行一个长为 mm 的字符串。字符串由大写字母组成,第 ii 个字符串的第 jj 个字符表示目标图案中第 ii 行第 jj 列单元格的颜色。

保证给定的目标图案可以通过最多 n+mn+m 次染色操作得到。

输出格式

输出第一行包含一个整数 r (1rn+m)r\ (1\le r\le n+m),表示要进行的操作次数。接下来 rr 行描述操作。

为了描述一次操作,首先应输出 R 或者 K,表示你希望对某行还是某列重新涂色(R 表示对某行重新涂色,K 表示对某列重新涂色)。接下来空一格,输出你希望重新涂色的行或列的编号,行按从上到下的顺序从 11nn 编号,列按从左到右的顺序从 11mm 编号。然后再空一格,输出一个大写英文字母,表示你希望对这行或这列重新涂成的颜色。

注意你不需要最小化操作次数——只需要最多操作 n+mn+m 次即可。

5 5
AAPAA
APPAA
AAPAA
AAPAA
APPPA

10
R 1 Z
K 4 A
K 2 P
R 5 P
R 4 A
R 3 A
R 1 A
K 5 A
K 3 P
K 1 A

2 3
AAA
PPP

2
R 2 P
R 1 A

提示

假设 P 代表绿色,A 代表黄色,Z 代表蓝色。样例 1 中的操作序列如下图所示:

lam2.png