2023.9.6 组合计数
CF40E
先特判若 \(n\bmod 2\neq m\bmod 2\) ,无解。
首先切入点是 \(k < \max\{n,m\}\),如果钦定 \(n\ge m\) 那么势必有一行是空的。
这一行空的有什么用呢?那么我们对于每列都随便填,可以通过这一行填某数使得乘积 \(-1\).
考虑每一行的方案数,如果已经填满的,只要考虑其是否为 \(-1\) 即可。
否则设其填了 \(cnt\) 位,贡献是 \(2^{m-cnt-1}\),因为要留一位是确定了的。
CF140E
由于颜色是等价的,所以我们设状态只需要考虑颜色的种数,最后答案的时候只需要若干排列组合即可。
所以我们可以强制给每个颜色一个编号,并使得编号小的第一次出现在前面,大的在后面。(最小表示法)。
我们先钦定颜色从 \(1\sim n\) 来取。我们现在求 \(f_{i,j}\) 表示在某一层中,填了 \(i\) 位,用了前 \(j\) 种的方案数。
\(f_{i,j}=f_{i-1,j-1}+(j-1)\times f_{i-1,j}\),对应的是填一种颜色 \(j\) ,和不增加新颜色,为了相邻的不同只能选 \(j-1\) 种。
我们考虑层与层之间的贡献,设 \(g_{i,j}\) 表示第 \(i\) 层用了 \(j\) 种颜色的方案数。
考虑总贡献是 \(C(m,j)\times f_{ai,j}\times \sum_k g_{i-1,k}\).
不合法的贡献是 \(f_{ai,j}\times g_{i-1,j}\)。
再乘上阶乘即可 \(f_{i,j}=C(m,j)\times j!\times f_{ai,j}\times \sum_k g_{i-1,k}-f_{ai,j}\times g_{i-1,j}\times j!\)
由于是任意模数,\(C(m,j)\) 就十分的恼人,我们发现 \(C(m,j)\times j!=A(m,j)\),就可以了。
CF482D
首先随机是没有用的,只是两种方案。
我们设 \(f_u\) 表示 \(u\) 子树内的染色方案,那么 \(f_u=\prod_{u\to v} (f_v+1)\).
我们直接将 \(f_u\) 乘 \(2\) 就行了吗?
不对,其实有一些方案,其顺序调换还是不会变化。
我们发现,不会变化的有且仅有:
1.染色的儿子的子树大小都为偶数。
2.染色的儿子的子树大小都为奇数且个数为奇数。
我们把状态扩充至 \(f_{u,0/1}\) 表示 \(u\) 子树染色的大小是偶数还是奇数,
然后计算即可。
CF325E
貌似不是组合计数?
首先奇数无解。
每个点出度和入度都为 \(2\),我们尝试跑欧拉回路。
然而直接跑是不行的。
我们注意到 \(i\) 和 \(i+n/2\) 所连的点是相同的。
我们考虑只把 \(i<n/2\) 的点向外建边,这是一颗满二叉树。
对于 \(i\ge n/2\) 的点,向 \(i-n/2\) 连边,在跑欧拉回路的时候不输出。
这样发现原图入度和出度平衡,跑欧拉回路。
CF896D
首先把 VIP 客户扔掉,只需要最后贡献乘上组合数即可。
然后变成了一个经典的卡特兰数模型。
把 \(50\) 元看成 \(1\),\(100\) 元看成 \(-1\),问最后的和在 \([l,r]\) 的方案数。
设 \(50\) 元为 \(n\) 个,\(100\) 元为 \(m\) 个。
对于最后的和为 \(x\),答案是 \(C(n+m,n)-C(n+m,n+1)\).
最后差分相消即可。
由于笔者时间紧迫,这篇文章写的稍显匆忙,但有时间就会来润色。