题面
试题来源
2012中国国家集训队命题答辩
问题描述
你有一个n*m的矩形,一开始所有格子都是白色,然后给出一个目标状态的矩形,有的地方是白色,有的地方是黑色,你每次可以选择一个连通块(四连通块,且不要求颜色一样)进行染色操作(染成白色或者黑色)。问最少操作次数。
输入格式
第一行两个数n,m表示矩形大小。
接下来n行描述目标状态,每行m个字符,’W’表示白色,’B’表示黑色。
输出格式
一行一个整数表示操作数。
样例输入
3 3
WBW
BWB
WBW
样例输出
2
数据规模和约定
100%的数据n<=50,m<=50
15%的数据n*m<=15
另外15%的数据m=1
题解
分析
设相邻的点互相通达,异色点距离为1,同色点距离为0
首先应知道,异色两点距离为奇数,同色两点距离为偶数
(请自行证明)
那么设某个点到每个黑点的最短距离中的最远距离为d
我们有一种最优染色方案(请自行证明最优性)
Step 1:将距离为d以内的点染为黑色
Step 2:将距离为d-1以内的点染为白色
Step 3:将距离为d-2以内的点染为黑色
·
·
·
Step d:将距离为1以内的点染为相应颜色
Step d+1:将距离为0的点(即自己所在区域)染为相应颜色
所以我们只要找到最小的d
输出