题目链接:https://codejam.withgoogle.com/codejam/contest/3324486/dashboard#s=p2&a=2
一共有$2n$个座位排成一排,现在有m对人去坐,每对人之间有顺序。每对人均不可以相邻,问一共有多少种坐法?
考虑用总的排列数减去每对人都相邻的情况,于是我们发现后者的排列是可以容斥的。
设$f(k)$表示$k$对人均坐在一起的排列数,那么答案就是:
$$
\sum_{k=0}^m(-1)^kf(k)
$$
$f(k)$也比较容易算,可以由下面几个部分组合起来:
- $m$对中任取$k$对:$C(m,k)$
- 每对人有顺序,那么所有可能的排列就是$2^k$
- 在$2n$个位置里面挑$k$对位置,将两个相邻位置看成一个座位,那么相当于$2n-k$个位置的排列,那么总计一共有$(2n-k)!$种排列。
于是$f(k)=C(m,k)2^k(2n-k)!$
1 |
|