数数

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\)

所以联立一下,得到

\[g_i=2^{\frac{i(i-1)}{2}}-\sum\limits_{s=1}^{i-1}g_s\cdot\binom{i-1}{s-1}\cdot2^{\frac{(n-s)(n-s-1)}{2}} \]

然后 \(O(n^2)\) 递推就行了。

posted @ 2022-01-02 22:01  hzy1  阅读(44)  评论(1编辑  收藏  举报