/*
translation:
有4*n的矩形一个,求用1*2的砖块去铺可以有几种填充方法?
solution:
矩阵加速+状态压缩
一看这道题以为是轮廓dp,但是由于n的值太大,所以无法进行轮廓dp,所以考虑用矩阵来加速。
如图片所示,在第n行铺完后第n+1行的情况可以有如图所示的几种情况。注意其中0101的状态是不可能出现的。因为如果出现0101
那么最后肯定有2个单独的空格不能填上。那么根据这几种状态可以给其编号如下
0:0000 -----> 0000, 0011/1100, 1001, 1111
1:0011或者1100 -----> 0000, 0011/1100
2:0110 -----> 1001
3:1001 -----> 0000, 0110
4:1111 -----> 0000
各个状态上一行可能的状态也标在右边了
所以就有f(n,0)=f(n-1,0)+2*f(n-1,1)+f(n-1,3)+f(n-1,4)
f(n,1)=f(n-1,0)+f(n-1,1)
f(n,2)=f(n-1,3)
f(n,3)=f(n-1,0)
poj3420(状态压缩+矩阵加速)
最新推荐文章于 2018-07-17 22:30:54 发布