【状压DP+高精】【cofun1370】走道铺砖问题

【cofun1370】走道铺砖问题

Description
有一个专门为装修设计方案的设计师。在某一天,他接到了一个项目,为一栋正在修建的大楼设计走道的地板铺设方案。此项目的委托人事先便进行了说明:地板砖只有1×2一种规格,而整栋楼中同类走道又有许多个,他不想其中有任何的两个出现重复的设计方案。因此,设计师必须确定其可行性,即对于一个N×M(N×M为偶数)的走道,用N×M/2块1×2的地板砖将其铺满,可以有多少种不同的设计方案,如果方案总数少于此类走道的个数,则该项目边不可能实现。
现在,他需要这样一个程序:对于输入的走道规格N、M,计算出可以设计出的不同方案总数(不要求本质不同)。

Input Format
输入文件仅一行,有两个数N、M,表示走道的规格。
Output Format
输出文件也只有一行,即得出的方案总数。

Sample Input
3 4
Sample Output
11

Hint
由于是走道,所以N和M中将会有一个较小。其中min{N,M}≤12,1≤N、M≤40,且N×M为偶数。


  • 分析 :
    • min{N, M} <= 12, 因此考虑状压DP。
      这题不是棋盘问题了,而是覆盖问题。
      但我们可以用类似的思想考虑:
      ①由于搬砖1 * 2,当前行仅与上一行相关联。
      ②dfs出每行的覆盖情况,把当前行和上一行压成二进制分别存在数组t,g中。(0:未覆盖/ 1:已覆盖)
      ③枚举每行进行状压DP,转移方程:
    f[i][t[j]] = f[i][t[j]] + f[i - 1][g[j]];

f[i][t[j]]:到了第i行,当前行状态为t[j]。

注意:由于数据大,需要运用高精度。
【这题的dfs转移本po理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值