枚举上方恰放 iii 个车。上方有 (bi)(ai)i!\binom bi\binom ai i!(ib)(ia)i! 种;它占用 iii 个共享列,下方有 (dk−i)(a+c−ik−i)(k−i)!\binom d{k-i}\binom{a+c-i}{k-i}(k-i)!(k−id)(k−ia+c−i)(k−i)! 种。
预处理阶乘和逆阶乘到 max(a+c,b,d)\max(a+c,b,d)max(a+c,b,d),枚举 i=0…ki=0\ldots ki=0…k 累加上述乘积。非法组合数返回零。小棋盘可逐行做列 mask DP;b=0b=0b=0 时直接使用矩形闭式。
时间复杂度 O(max(a+c,b,d)+k)O(\max(a+c,b,d)+k)O(max(a+c,b,d)+k),空间复杂度 O(max(a+c,b,d))O(\max(a+c,b,d))O(max(a+c,b,d))。
注册一个 Hydro 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 Hydro 通用账户