ABC422G
第一问
即求 \(A x+B y+C z=N\),且 \(x,y,z\ge0\) 的方案数。
直接 DP 即可。\(f(i,j)\) 表示前 \(i\) 个盒子一共放了 \(j\) 个球,其中 \(1\le i\le 3\)。
时间复杂度 \(O(N)\)。
第二问
相当于求
\[\sum_{A x + B y + C z = N} \frac{N!}{(A x)!(B y)!(C z)!}
\]
考虑根号分治:
- 一方面,我们可以枚举 \(x,y\),然后算出 \(z\) 并计算贡献。时间复杂度为 \(O(\frac{N^2}{AB})\);
- 另一方面,我们可以先做一个 DP 把前两个盒子分配好:\(f(i,x,y)\) 表示考虑了前 \(i\) 个球且只能往 \(A,B\) 盒子里放球,且两个盒子里的球数 \(\mod A,\mod B\) 分别为 \(x,y\) 的方案数,最后答案即为 \(\sum_{z}\binom{N}{Cz}\times f(N-Cz,0,0)\)。时间复杂度 \(O(N A B)\)。
在 \(A \times B \ge \sqrt{N}\) 时用算法一,\(A \times B \le \sqrt{N}\) 时用算法二即可。时间复杂度 \(O(N^{1.5})\)。

浙公网安备 33010602011771号