https://www.luogu.com.cn/problem/P2327
看到题解区一位 dalao 思路甚妙,很受启发,故整理了一下思路。
本人表述能力不强,如讲解不清还请见谅。
思路:
四维 DP,定义四维 f f f 数组,第一维存储第二列数的位置 i i i,第二、三、四维分别表示第一列 i − 1 i-1 i−1 , i i i , i + 1 i+1 i+1 的位置有没有雷(定义 1 为有雷,0 为无雷)。
所以初始化为 f ( 0 , 0 , 0 , 0 ) = f ( 0 , 0 , 0 , 1 ) = 1 f(0,0,0,0)=f(0,0,0,1)=1 f(0,0,0,0)=f(0,0,0,1)=1.
我们还能知道, a i a_i ai 影响的摆放雷的方案的位置 i + 1 i+1 i+1 , i i i 由 a i − 1 a_{i-1} ai−1 影响的摆放雷的方案的位置 i i i , i + 1 i+1 i+1 推来,那么转移思路就很好想了。
做法:
枚举第二列每一个数,因为棋盘是 n × 2 n\times2 n×2 的大小,所以 a i a_i ai 不能大于 4,所以分以下四种情况讨论:
1.当 a i = 0 a_i=0 ai=0 时,此时状态为 f ( i , 0 , 0 , 0 ) f(i,0,0,0) f(i,0,0,0).
由 a i − 1 a_{i-1} ai−1 转移时,只有 f ( i − 1 , 1 , 0 , 0 ) f(i-1,1,0,0) f(i−1,1,0,0) 和 f ( i − 1 , 0 , 0 , 0 ) f(i-1,0,0,0) f(i−1,0,0,0) 两种情况.
所以 f ( i , 0 , 0 , 0 ) = f ( i − 1 , 1 , 0 , 0 ) + f ( i − 1 , 0 , 0 , 0 ) f(i,0,0,0)=f(i-1,1,0,0)+f(i-1,0,0,0)