poj 1173 具有重複的組合和容斥原理

2021-05-23 07:41:47 字數 1636 閱讀 1734

題目描述

計算bc(n,k,m),就是x1+x2+...+xk=n,其中1<=xi<=m,有多少個解?這些解順序排列,輸入乙個排列,計算它是第幾個?

詳見http://acm.pku.edu.cn/judgeonline/problem?id=1173。

如bc(7,4,2),有16個解

0: 1000100  |  8: 1100100

1: 1000110  |  9: 1100110

2: 1001000  | 10: 1101000

3: 1001100  | 11: 1101100

4: 1001110  | 12: 1101110

5: 1011000  | 13: 1110010

6: 1011100  | 14: 1110100

7: 1100010  | 15: 1110110

然後輸入

7 4 3

51001110

1110110

1001100

1001110

1000100

輸出
16415

340

題目分析
ioi的題,做的我好爽呀。很多解題報告用觀察的方法,我是通過組合數學分析的,也算是另乙個思路吧。而且我相信從數學原理分析問題,

分析的更透徹,對本質把握的更好一些。

首先具有重複的組合數。若從k種物品中選出n個物品,其中每種物品可以原則無限多個,成為具有重複的組合數,這個組合數等於c(n+k-1,k-1).這個題等價於簡單的數學表達是x1+x2+...+xk=n,其中xi>=0,有多少個解.

證明:把n個物品排成一排,用k-1個欄杆對它們進行劃分,如下圖所示

。。。|。。。|。。。

。||。。。。。。。。

這裡n=9,k=3,第乙個劃分對應3+3+3=9;第二個劃分對應1+0+8=9.劃分和解是一一對應。

劃分有c(n+k-1,k-1)種,所以解有c(n+k-1,k-1)種。

其次,容斥原理。集合a1不具有性質p1,集合a2不具有性質p2,...,那麼不具有性質p1和p2...的集合中的元素的個數滿足...原諒我懶得把這個公式打出來,如果你想知道,網上隨便就搜出來了。

那麼回到本題,x1+x2+...+xk=n,其中1<=xi<=m的解的個數怎麼計算呢? (1)

首先用xi=yi+1代替上式,得到y1+y2+...+yk=n-k,其中0<=yi<=m-1.

現在考慮式子z1+z2+...+zk=n-k,其中z0>=m;zi>=0 (i!=1) (2)

用a1表示解中不具有0<=z1<=m-1的性質,但是其它解可以任取非負值,那麼就是(2)的解。

要解(2)式,用z1=w1+m代替,則w1可取任意值,這轉化為可以求解的問題。

(2)式可以計算了,根據容斥原理就可以解(1)式。

至於排序的問題,觀察觀察就出來了,詳情就看**吧。

**

poj1173 多重集組合數

這道題的本質是將n個物品分成k堆,每堆物品個數大於0小於等於m的方案數。我們定義d i j 為前i堆物品總數為j的方案數,那麼d i j 的求解方法如下 其可化為d i j d i j 1 d i 1 j 1 d i 1 j 1 m 初始條件為d 0 0 1 d i 0 0 i 0 證明如下 對於第...

4 1 5 具有重複特徵的英文單詞驗證 2

2 至少存在兩個相同字母英文單詞的驗證 至少存在兩個相同字母英文單詞也具有重複特徵,可以使用後向引用來驗證該型別的英文單詞。以下 正規表示式都能夠至少存在兩個相同字母英文單詞。b a z a z a z k a z b 41 b a z a z a z 1 a z b 42 正規表示式 41 解釋 ...

SSL 有重複的元素組合

輸入一串小些字母 小於30個字母,有重複字母 從中取出k個字母,輸出組合情況。一串字元 乙個數字n,表示取n個字母 所有的組合情況 aabbcc 41 aabb 2 aabc 3 aacc 4 abbc 5 abcc 6 bbcc將字元個數用乙個桶裝起來,然後使用搜尋找出所以的組合 include ...