[BZOJ2303][Apio2011]方格染色(数学相关+加权并查集)

题目描述

传送门

题目大意:一个n*m的网格染成红蓝两种颜色,要求每个田字格有1个或3个红色的。现在有一些格子已经染了颜色,问有多少合法的染色方案。

题解

和这题gang了一天。。。

这题的关键在于,将每一个限制点的关系,转化成和第一行第一列的关系
若把颜色标记为0/1,那么每个田字格的异或值为1。首先枚举(1,1)的取值。考虑一个限制点(x,y)(x>1,y>1),如果x,y都为偶数,那么(1,1)..(x,y)范围内共有奇数个田字格,总异或值为1;否则有偶数个田字格,总异或值为0。并且在范围内,除(1,1),(x,1),(1,y)和(x,y),其余的点都被田字格覆盖了偶数次,所以根据(1,1)^(x,1)^(1,y)^(x,y),就能得到(x,1)与(1,y)的关系。如果限制点在第一行和第一列就可以直接得到这个限制点和(1,1)点的关系。
维护一个加权并查集,每个点的权值为这个点与其代表元素的关系,0相等1不相等。然后对于可以建立关系的两个点在并查集中合并、判断无解。最终,这一次的贡献与并查集中的连通块个数p有关,为 2p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值