Description
你有\(n\)个串,第\(i\)个串上有\(A_i\)块肉和\(B_i\)块菜。现在选出两个串,将他们中的肉和菜放在一起重新排列,求总方案数。
\(2\leq n\leq 200000, 1\leq A_i,B_i\leq 2000\)。
Solution
很显然对于两个串\(i, j\),对答案的贡献是: \[ \binom{A_i + B_i + A_j + B_j}{A_i + A_j} \] 这个东西有什么组合意义吗?答案是有的。就是在一个平面上从原点走到\((A_i + A_j, B_i + B_j)\),每次只向上或者向右走一格的方案数,然后我们把整个坐标系平移一下就可以把这个东西变成从\((-A_i, -B_i)\)走到\((A_j, B_j)\)。
然后我们建出所有的点,就是要我们求所有正点走到所有负点的方案数之和。这个东西很好DP,我们先把横纵坐标都加2000,然后根据到\((0, 0)\)的曼哈顿距离从小到大递推即可。
Code
1 |
|