CF1237F
CF1237F
给定一个大小为 \(n\times m\) 的矩形,需要放置部分 \(1\times 2\) 的骨牌,满足不存在两张骨牌占据了同一行或者同一列。
现在已经放了 \(k\) 张骨牌,求在这个矩形上额外放置若干张骨牌的方案数(骨牌无标号)。
\(n,m\le 3600,k\le 2400\)
Solution
维度分离真的是一个好东西。
你会发现我们可以将问题视为一维的情况,然后只需要将两个一维维的情况配对起来就可以了(这样就是二维了)。
所以考虑一维的情况,即给定长度为 \(n/m\) 的序列,部分位置已经放置了元素,你需要放置恰好 \(k\) 个 \(1/2\) 的方案数。
设 \(f_{i,j}\) 表示当前放置了 \(j\) 个 \(2\) 的方案数,转移枚举当前位置放 2 / 不放 的情况即可,然后剩余的位置全部塞 \(1\) 即可。
最后统计答案的时候枚举 \(1,2\) 在第一个维度上的方案数即可。复杂度为 \(\mathcal O(n^2+m^2)\)