UVA580 危险的组合 Critical Mass

DP做法:转移的时候只要考虑最后有几个连续的铀盒或者是否已经满足条件。

所以用 $dp_{i,j}$ 表示有考虑了前 $i$ 个盒子,最后有 $j$ 个连续铀盒的方案数。特殊地,当 $j = m$ 时表示前 $i$ 个盒子已经有了连续 $m$ 个铀盒的方案数,其中 $m$ 为需要的连续铀盒数,题目中, $m = 3$。

转移方程:$\begin{cases} dp_{0,0}=1 \\ dp_{i,0} = \sum ^{m-1} _{j = 0} dp_{i-1,j} \\ dp_{i,j} = dp_{i-1,j-1} \\ dp_{i,m} = 2dp_{i-1,m} + dp_{i-1,m-1}\end{cases}$

时间复杂度 $O(nm)$

不难发现 $dp_{i,j}=dp_{i-j,0}$ ,则 $
\begin{cases} dp_{0,0} = dp_{1,0} = 1 \\ dp_{i,0} = 2dp_{i-1,0}-dp_{i-m-1,0} \\ dp_{i,m} = 2dp_{i-1,m} + dp_{i-m,0}\end{cases}$

时间复杂度 $O(n)$

递推做法, $f(n) = 2^{n-m} + \sum ^{n-m-1}_{i=0} 2^{n-i-m-1}(2^{i}-f(i))$

假设 $n$ 个箱子第 $i+1$ 箱子为 ‘L’ ,第 $i+2,i+3,...,i+m$ 个箱子为 'U',前 $i$ 个箱子不满足题目条件,方案数为 $(2^{i}-f(i))·2^{n-i-m-1}$ 个。

算上前 $m$ 个箱子都为 'U' 的方案数 $2^{n-m}$ 个,不重复,不遗漏。

posted @ 2021-10-01 22:24  Lcyanstars  阅读(60)  评论(0编辑  收藏  举报