Placing Squares
题解
拍死脑袋也想不出来啊。
敲黑板:
\(x^2\) 的组合意义,就是在一个长为 \(x\) 的区间内放小球(一个黑色,一个白色,可以重叠)的方案数。
这样题目就转化为了在一个序列内插板,每两个板之间放两个小球的方案数。
这么转化可以将难以处理的平方代价转化掉,可容易 DP,也更容易优化。
考虑 DP:
设 \(f_{i,j}\) 表示看到前 \(i\) 个格子,最近的板之后已经放了 \(j\) 个小球。
若第 \(i-1\) 和 \(i\) 之间可以插板:
- \(f_{i,0} = f_{i - 1,2}(放隔板) + f_{i-1, 0}(不放隔板)\)
- \(f_{i,1} = 2\times f_{i-1, 2}(放隔板,放球)+ 2\times f_{i-1, 0}(不放隔板,放球)+ f_{i-1,1}(不放隔板,不放球)\)(系数 \(2\) 表示放一个小球有两种方案,放黑球或白球)
- \(f_{i,2} = f_{i-1, 2}(不放隔板,不放球)+ f_{i-1,0}(不放隔板,放俩球)+ f_{i-1,1}(不放隔板,放一球)+ f_{i - 1, 2}(放隔板,放俩球)\)
若第 \(i-1\) 和 \(i\) 之间不可以插板:
- \(f_{i,0} = f_{i-1, 0}(不放隔板)\)
- \(f_{i,1} =2\times f_{i-1, 0}(不放隔板,放球)+ f_{i-1,1}(不放隔板,不放球)\)(系数 \(2\) 表示放一个小球有两种方案,放黑球或白球)
- \(f_{i,2} = f_{i-1, 2}(不放隔板,不放球)+ f_{i-1,0}(不放隔板,放俩球)+ f_{i-1,1}(不放隔板,放一球)\)