BZOJ2303: [Apio2011]方格染色

这篇博客介绍了BZOJ2303题目的解决方案,即如何在一个n × m的网格中染色,使得每个2 × 2的子区域有奇数个红色方格。博主分享了两种算法,一种是简单的2^(n+m-1)的计算,另一种是通过并查集处理行与列的关联,判断是否存在冲突。博客还提到了数据范围较小导致的算法有效性问题,并给出了处理冲突和确定颜色的策略,最终计算满足条件的染色方案数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2303

题目简述:有一个包含n × m个方格的表格,每个方格可以涂红色或蓝色,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 个)红色方格。有些格子已经被确定颜色,剩下的格子可以自行染色。求满足条件的方案数MOD(10^9)。


哎这数据太弱了,,考试随便写了个。。神坑算法 ,就过了80分,剩下两个点还是因为爆栈。

首先一个没有一个是固定的,答案就是2^(n+m-1)。这个随便搞zhao一gui下lv就行了。记p=n+m-1

神坑算法:先看他给出来的是否有冲突,没有冲突就找他给出来的东西的所有极大联通块。对每个联通块找一个最小的矩形把他包起来,令这个矩形的长宽为a,b

,然后p-=(a+b-1)。。然后所有矩形搞完了就算2^p。  哎哎。。


正规算法:

其实试一下就会发现,奇数行和偶数行分别是有规律的。若第i行是奇数行且i行中第x列和第y列的颜色是一样的,那么所有奇数行的第x列和第y列的颜色都是一样的。偶数行亦然。且一行只要确定了一个&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值