YC284A [ 20240504 CQYC省选模拟赛 T1 ] 数数(count)

题意

现在有四种物品,分别有 \(n1, n2, n3, n4\) 个,有多少种排列物品的方案使得任意两个相邻物品的种类不同。

\(0 \le n1, n2 \le 500, 0 \le n3, n4 \le 5 \times 10 ^ 4\)

Sol

注意到 \(n1\)\(n2\) 特别小。

设四个物品分别为 \(C, D, A, B\)

考虑先插入 \(C, D\),再考虑 \(A, B\) 插入的贡献。

\(f_{i, j, k, 0/1}\) 表示已经放了 \(i\)\(C\) 物品,放了 \(j\)\(D\) 物品,有 \(k\) 个相邻物品不合法,最后放了 \(0/1\)

转移是简单的。

于是问题变成了,有 \(n1 + n2 + 1\) 个空隙,选 \(i\) 个空隙,其中我们钦定 \(j\) 个空隙必选,求 \(A, B\) 物品在每一段中合法的方案数。

显然,对于一个状态,\(C, D\) 物品的贡献为 \(f_{n1, n2, j, 0} + f_{n1, n2, j, 1}\)

考虑怎么将 \(A, B\) 插入进去。

注意到显然每一段要么是形如 \(AB...A\),或是 \(BA...B\),以及 \(AB...B\)

因为空隙数只有 \(n1 + n2 + 1\) 个,而每一段 \(A\)\(B\) 的个数之差至多变化 \(1\)

所以这个差值是不大的。

考虑由 \(k\) 枚举 \(BA...B\) 段的个数。

\(n = n3, m = n4\),且 \(n \ge m\)

显然,由 \(A\) 物品与 \(B\) 物品的差值可以算出 \(AB...\) 段的个数。

\[AB...A = n - m + k \]

而对于 \(AB...B\) 段,可以通过剩余的空隙个数算出。

\[AB...B = i - n + m - 2k \]

对于 \(A, B\) 没有填完的部分,则放在一起,当成 \(AB\) 填。

显然,对于 \(i\) 个位置都可以随便填,球同盒不同可空,插板即可。

答案就是:

\[\dbinom{n - i - 1}{k - 1}\dbinom{i - j}{n1 + n2 + 1 - j} \dbinom{k}{i} \dbinom{n - m + k}{i - k} g_i \times 2 ^ {i - n + m - 2k} \]

posted @ 2024-05-07 21:57  cxqghzj  阅读(4)  评论(0编辑  收藏  举报