#iai30a2. 粉刷(Paint)
粉刷(Paint)
粉刷
题目描述
小爱是一位粉刷匠,她现在需要粉刷一块包含 小格子的墙面,每个格子一开始都是白色的。小爱可以进行以下两种操作:
- 把某一行全部染成红色
R或者黑色B。 - 把某一列全部染成红色
R或者黑色B。
每次涂到一个格子时,无论这个格子之前是否被染过色,都会被覆盖成当前的颜色。经过一些操作后,小爱制作完成了一个只有红色与黑色的染色图。给出一幅染色图,输出最少需要几步可以画成这幅图。如果无法通过以上操作获得,则输出 。
输入格式
第一行两个正整数 ,分别表示染色图的长和宽。
接下来 行,每行一个长度为 且只由 R、B 构成的字符串,用来描述整幅染色图。
输出格式
输出一个正整数表示答案。
样例输入 #1
2 8
BBRRRBRB
BBRRRRRB
样例输出 #1
6
样例输入 #2
2 3
RRB
BRR
样例输出 #2
-1
数据范围
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,;
- 对于 的数据,。
知识点与难度
本题涉及的知识点从属于 GESP 六级(贪心、哈希、排序),难度等级:⭐⭐⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 N,M≤5 / 特殊: 全R / 特殊: 全B / 特殊: 单行 |
| 2 | 15 | 9~11 | Hack: 不可行棋盘格 / Hack: N=1 / Hack: 大规模全同 |
| 3 | 30 | 12~20 | 中规模 N,M≈100~500 / 大规模 N,M≈3000 压力 |
| 4 | 25 | 21~25 | 随机 N,M=1~3000 回归 |