[SMOJ2161]棋盘

这道题目通过容斥原理解决棋盘上黑白格子的排列问题,避免行列完全为空。文章介绍了两种思路,一是直接对棋盘进行容斥,二是仅对行进行容斥,讨论了时间复杂度和非法情况的排除方法。
摘要由CSDN通过智能技术生成

这道题目是容斥原理的典型例题,主要体现了一种逆向思维。

如果我们试图直接考虑在某种情况下,每一行和每一列都“不完全为空”,会发现相对比较难以计算。此时可以反其道而行之,先把所有的情况算出来,然后再减去不合法的情况,会更好办些,这里就体现了容斥原理的思想。

使用容斥原理解决本题,大体上可以分为两种解决思路:

一、直接对整个棋盘进行容斥。

不考虑任何限制,每个格子就有黑和白两种状态,因此整个棋盘共有 2RC 种可能的状态。

接下来,我们考虑一个 3*3 的棋盘,不妨把第一行完全为空的状态集合记为 A ,则显然还剩下 6 个格子,对它们没有什么限制,每个都有黑与白两种可能,因此有 |A|=2(R1)C 。不难理解,第二行完全为白( B )、第三行完全为白( C )的方案数都和 A 是一样的。类似地,第一列完全为白( D )、第二列完全为白( E )和第三列完全为白( F )的方案数都为 2R(C1) 。上面提到,合法方案数=总方案数-非法方案数,即

ans=2RC(|AB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值