[unknown source] 作画

一、题目

题目描述

C C C 喜欢作画, 尤其喜欢仅使用黑白两色作画遗像。

画布可以看成 r × c r\times c r×c 的单元格矩阵。现在小 C C C 构思好了他的画, 准备动笔。初始时画布是全白的,他每一次下笔可以将一个四连通的部分涂成黑色或白色。相邻格子定义为有公共边的格子。称 S S S 为四连通,当且仅当 S S S 中任意两个格子之间都存在一条 S S S 内路径,满足只在相邻格子间移动。

你需要告诉他,最少需要下笔多少次才能完成画作。

数据范围与提示

max ⁡ ( r , c ) ≤ 50 \max(r,c)\le 50 max(r,c)50

二、解法

通过样例不难猜到:存在一种最优方案使得每次操作的区域是上一次的子集且颜色与上一次相反。

证明分三种情况讨论,用归纳法, S S S为所有操作范围的并, T T T为下一次的操作范围。

第一种情况 S S S T T T 不交的时候,如何说明?看图:
在这里插入图片描述
我们先把第一次操作的扩张到全部(包含 1 1 1)的操作范围,红色(代表涂白)的部分扩张 2 , 1 2,1 2,1,最里面的黑色扩张 3 , 2 3,2 3,2,那么现在 3 3 3被多涂黑了,我们再使用一次操作将其涂白即可,证明了步数最优。

到这里我想提醒一下,我们的中心思想是扩张,结合这道题的性质就不难想到我们为什么要这么做(收缩是危险的)

第二种情况 T T T S S S 包含,这种情况又下设两种情况。 c a s e 1 \tt case 1 case1 T T T落在某个完整区域内,其实外层的可以忽略,那么就归约到了第一种情况。 c a s e 2 \tt case 2 case2的做法看图:
在这里插入图片描述

上图表现了跨越了多个操作范围的涂黑操作(形象地说是插入),那么秉承扩张的思想,我们把第三层的范围扩张成黄色部分,最里层也扩张成黄色部分,这说明了这种插入式的操作就是浪费步数,不优。

第三种情况 S S S T T T 有交,那么一定可以转化成 T T T S S S 包含的情况(对第一次操作动点手脚就行了),那么归约到第二种情况。

证明了结论过后,看怎么用?第一次怎么操作是不能确定的,所以需要枚举。但这里枚举中心点就足够了,我们把同色边看做 0 0 0,异色边看做 1 1 1,那么每个中心点求出离他最远的点的距离就是答案。

nothing here
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值