【题解】BZOJ4806 炮

该博客介绍了如何解决一个棋盘上摆放炮的问题,确保炮与炮之间不会相互攻击。作者通过动态规划(DP)方法进行求解,分析了在不同情况下放置炮的策略,并提出了只需关注每列是否有1个或2个炮的思路。通过状态转移方程减少计算量,并利用滚动数组优化空间复杂度。
摘要由CSDN通过智能技术生成

Description D e s c r i p t i o n

传送门

有一个 nm n ∗ m 的一个棋盘,问在棋盘上面摆放炮且炮与炮之间互不攻击的方案数。

Solution S o l u t i o n

一看就是DP。

看到 n,m n , m 相对于状压DP的数据规模来说比较大,因此不好状压。

仔细分析,炮与炮之间发生冲突当且仅当所在的行或列上有 3 3 个及以上的炮。

而且,只要一列上的炮数少于 3 个,无论这两列摆在什么位置,这几个炮都不会相互攻击。由此,我们并不需要记录这几个炮的具体摆放位置,只要知道放有 1 1 个或 2 个炮的位置就行了,这样没有摆炮的列数也可以推出来。

因此,我们用 d(i,j,k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值