BZOJ4517 - [Sdoi2016]排列计数

BZOJ4517 - Click Here

  

Description

  求有多少种长度为 n 的序列 A,满足以下条件:

  1~n 这 n 个数在序列中各出现了一次

  若第 i 个数 A[i] 的值为 i,则称 i 是稳定的。序列恰好有 m 个数是稳定的

  满足条件的序列可能很多,序列数对 10^9+7 取模。

  

Input

  第一行一个数 T,表示有 T 组数据。

  接下来 T 行,每行两个整数 n、m。

  T=500000,n≤1000000,m≤1000000

  

Output

  输出 T 行,每行一个数,表示求出的序列数

  

Solutions

  呜呜呜,退役生活好难受啊,文化课完全听不进去(所以我用物理课来推错排问题)

  

  我们考虑弱化版问题:稳定的位置是给出的,且这个位置集合为$S$。

  设$f(S)$表示$S$集合的位置是稳定的方案,$g(S)$表示仅有$S$集合的位置是稳定的方案。

  显然有$f(S)=\sum_{S \subseteq S’} g(S’)=(n-\mid S \mid)!$,容斥一下有$g(S)=\sum_{S \subseteq S’} (-1)^{\mid S’ \mid - \mid S \mid}f(S’)$

  

  把$f(S’)=(n- \mid S’ \mid)!​$带入得到$g(S)=\sum_{S \subseteq S’} (-1)^{\mid S’ \mid - \mid S \mid}(n - \mid S’ \mid)!​$

  将变量改为数值,即用$g(\mid S \mid)$取代上诉的$g(S)$,则可得到$g(x)=\sum_{x \leq y \leq n} (-1)^{(y-x)}(n-y)!\binom{n-x}{y-x}$

  

  回到本题,稳定位置的集合未给出,但是给出了集合大小。同时考虑到对于不同的大小相同的集合,其方案互相独立。因此可以直接枚举集合,再套用上诉式子,即答案为$\binom{n}{m}g(m)$

  化简一下有,$ans=\frac{n!}{m!}\sum_{0 \leq k \leq n-m} \frac{(-1)^k}{k!}$

  

  把阶乘之类的预处理一下,就能$O(1)$询问啦。还是挺好推的~

  

CODE

CODE - Click Here

本站总访问量次 | 本站访客数人次

Powered by Hexo | Designed by iTimeTraveler | Refined by CSHwang