錯排問題 組合數學 容斥原理

2021-08-09 10:59:27 字數 1930 閱讀 2807

3.錯排問題(problem)

【題目描述】

n本不同的書放在書架上。其中m本書已經重新擺放好,將剩下的n-m 本書也重新擺放,使每本書都不在原來放的位置。

求有幾種擺法。

【輸入資料】

第1行兩個數n,m;

接下來m行,每行兩個數xi,yi表示原來的第xi本書已經放到了第yi 個位置上資料保證任意兩個x不相同,任意兩個y不相同。

【輸出資料】

輸出方案數,對1000000007取模。

【樣例輸入】

4 11 2

【樣例輸出】

3【樣例解釋】

(2 1 4 3)、(3 1 4 2)、(4 1 2 3)。

【資料範圍】

對於 30% 的資料,n<=10。

對於 60% 的資料,n<=20。

對於100% 的資料,n<=100000,1<=xi,yi<=n

題解:非常簡單的一道排列問題,就是考場上看到不是很難就放在那,結果只剩10分鐘打暴力qaq。考慮合法方案數非常複雜,但考慮不合法的方案數相對簡單,一本書不合法,兩本書不合法,三本書不合法……顯然要用容斥原理。對於n本書,有n!種排列方式,對於一本書不和發的有(n-1)!種排列,對於已經放了的書,考慮還剩的n-m本書中有s本任然可能不合法,那麼

ans=(n-m)!-c(s,1)*(n-m-1)!+c(s,2)*(n-m-2)!-c(s,3)*(n-m-3)!+…+(-1)s*c(s,s)*(n-m-s)!

=σ(k=0~s) (-1)k*c(s,k)*(n-m-k)!

30分:暴力;

60分:狀態壓縮dp

100分:組合數學

總結:考場上一定要注意考試技巧,對於月簡單的題,越是要花多的時間爭取做對,越是難的題先想要樸素做法,在樸素做法的基礎上再優化。

30分:

#include #include #include #include #define mod 1000000007

using namespace std;

int n,m,last[100000],now[100000];

bool vis[100000],flag[100000];

long long ans=(long long)0;

void dfs(int dep)

if(vis[dep]) dfs(dep+1);

else

} return ;

}int main()

60分:

#include#include#includeusing namespace std;

const int mod=1000000007;

const int maxn=100005;

int n,m;long long ans=0;

int f[21][1<<20],c[21][21];

bool visit[maxn];

int read()

void work_60()

return re;

}long long get_inv(long long x)

return ans;

} void init()

long long c(int m,int n)

int main()

for(int i=1;i<=n;i++)

if(!flag[i] && !vis[i])

s++;

init();

long long ans=cal[n-m];

for(int i=1;i<=s;i++)

printf("%lld\n",ans);

return 0;}/*

10 3

7 16 8

2 92790

4 11 2

3*/

組合數學 容斥原理和錯位排列

真的,學了組合數學你會克服公式恐懼症0.0深有體會 設a 1,a2 a n 為有限集合,用 a i 表示集合ai 中的元素個數那麼有這樣的結論 a 1 a2 a n i 1n ai 1 in ai aj 1 i jn ai aj ak 1 n 1 a1 a2 an 總的概括就是奇數個集合的並集累加和...

CCA的小球 組合數學 容斥原理

給定 n 個小球,每個小球有顏色,要將它們擺成一行 兩個方案不同,當且僅當存在某個位置,兩種方案擺在這個位置的小球顏色不同。乙個方案合法,當且僅當不存在任意兩個位置相鄰的小球顏色相同,求合法方案數對 10 9 7 取模後的值 首先考慮取反面計算。考慮 兩個方案不同,當且僅當存在某個位置,兩種方案擺在...

bzoj 4710(組合數學 容斥原理)

傳送門 題解 先介紹一條公式 將n個物品分給m個人有c n m 1,m 1 種方案。但是這些方案是包括了不合法的 有些人沒有獲得任何物品 對於這道題,需要保證所有人都分到物品,所以容斥原理解決 ans 0個人沒分到 1個人沒分到 2個人沒分到 n個人沒分到 對於某一種情況 i個人沒分到 當前方案數 ...