AtCoder Beginner Contest 204 F Hanjo 2

AtCoder Beginner Contest 204 F Hanjo 2

H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数。
数据范围H <= 6, W <= 1e12

看到W的范围就可以想到是一个矩阵快速幂优化的dp转移,问题的关键是如何写出dp的方程以及矩阵的构造。

这里题解的巧妙在于状态的定义,因为不好处理1 * 2的地砖横着摆的情况,因为这会跨两行,我开始以为会有2^12,也就是枚举两行的状态。不过这里状态的定义是当前行的二进制状态压缩,并且要保证前一行是已经塞满的情况。所以在构造状态转移矩阵的时候,也就是从当前的状态 d p [ i ] [ S ] dp[i][S] dp[i][S]转移到状态 d p [ i + 1 ] [ T ] dp[i+1][T] dp[i+1][T]的时候,是要搜索找到当前的状态,也就是S,在加入一些1 * 1和1 * 2的地砖之后变为全1的状态,这时候所对应的T就是 d p [ i + 1 ] [ T ] dp[i + 1][T] dp[i+1][T]

而转移矩阵 t r a n [ S ] [ T ] tran[S][T] tran[S][T]则是从 d p [ i ] [ S ] dp[i][S]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值