数数
Problems
1. [FZOJ5022]庆典
将 \(n\) 个人分为 \(m\) 组,使得每一组的人数都不一样,求方案数。
\(n,m\le 10^5\)。
2. [SDOI2016]排列计数
求有多少种 \(1\) 到 \(n\) 的排列 \(a\),满足序列恰好有 \(m\) 个位置 \(i\),使得 \(a_i = i\)。
对于 \(60\%\) 的数据,\(n,m,T\le 1000\)。
对于 \(100\%\) 的数据,\(n,m\le 5\times 10^5,T\le 10^6\)。
3. [POJ1737]Connected Graph
给定 \(n\)。求 \(n\) 个有编号的点可以组成多少个不同的联通图。
\(n\le 50\)。
4. [CF855C]Helga Hufflepuff's Cup
给你一棵 \(n\) 个点的树,可以染 \(m\) 种颜色,现在定义一种最高值 \(k\),一棵树上最多能有 \(x\) 个最高值,如果一个节点为最高值 \(k\),那么他相邻的节点的值只能选比他小的。求染色方案数。
\(n\le 10^5,k\le m\le 10^9,1\le x\le 10\)。
5. [HNOI2012]排队
某中学有 \(n\) 名男同学,\(m\) 名女同学和 \(2\) 名老师要排队参加体检。他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的)
\(n,m\le 2000\)。
Solutions
1. [FZOJ5022]庆典—Solution
鸽。。。
要不先看看 博客$ QwQ$
2.[SDOI2016]排列计数—Solution
算法 1
题目:“恰好 \(m\) 个位置” 快试试二项式反演!
至少 \(i\) 个位置相同很好算,直接钦定就可以了。
时间复杂度 \(O(Tn)\),期望得分 \(60\)。
算法 2
\(T\le 10^6\),我们需要预处理。
首先我们可以要钦定 \(m\) 个位置相等,然后剩下 \(n-m\) 个位置不等。
那么剩下 \(n-m\) 个位置就是一个错排问题。
预处理 \(D_i\) 表示 \(i\) 个不同数字的错排方案数,则答案为 \(\binom{n}{m}\cdot D_{n-m}\)。
时间复杂度 \(O(100)\),期望得分\(n+T\)。
3.[POJ1737]Connected Graph—Solution
考虑 \(dp\),但是我们发现并不能很好地表示一种状态。
但是我们可以容斥:计算总方案数 \(-\) 不连通方案数。不妨设 \(f_i\) 表示 \(i\) 个点能组成不连通图的个数。
考虑计算 \(f_i\),有一个很妙的技巧:枚举 \(1\) 号点所在连通块大小,计为 \(s\)。于是剩下 \(n-s\) 个点不连通,可以随便连边,这一部分的方案数为 \(2^{\frac{(n-s)(n-s-1)}{2}}\)。
所以 \(f_i=\sum\limits_{s=1}^{i-1}g_s\cdot\binom{i-1}{s-1}\cdot2^{\frac{(n-s)(n-s-1)}{2}}\) ,其中 \(g_i\) 表示 \(i\) 个点能组成的联通图的个数。
啥,你说不会算 \(g\)?
根据我们上面说的容斥思路,显然有 \(g_i=2^{\frac{i(i-1)}{2}}-f_i\)。
所以联立一下,得到
然后 \(O(n^2)\) 递推就行了。