排列組合 隔板法

2021-08-24 17:26:50 字數 1570 閱讀 6456

1、定義

隔板法就是在n個元素間插入(b-1)個板,即把n個元素分成b組的方法。c(n-1,b-1)

2、條件

隔板法必須滿足三個條件:

(1)這n個元素必須相同,(2)所分成的每一組至少分得乙個元素,(3)分成的組別彼此差異。

3、示例  

(1)例如:某校組建一球隊需16人,該校共10個班級,且每個班至少分配乙個名額,共有幾種情況。c(16-1,10-1)。

對n件相同物品(或名額)分給m個人(或位置),允許若干個人(或位置)為空的問題,可以看成將這n件物品分成m組,允許若干組為空的問題.將n件物品分成m組,需要m-1塊隔板,將這n件物品和m-1塊隔板排成一排,佔n+m-1位置,從這n+m-1個位置中選m-1個位置放隔板,因隔板無差別,故隔板之間無序,是組合問題,故隔板有cn+m-1 m-1種不同的方法,再將物品放入其餘位置,因物品相同無差別,故物品之間無順序,是組合問題,只有1種放法,根據分步計數原理,共有cn+m-1 m-1×1=cn+m-1 m-1種排法

(2)求方程x1+x2+…+xk=n的非負整數解或正整數解

解:正整數解:轉化為10個相同的小球裝入4個不同的盒子,每盒至少有乙個,有c(10-1,4-1)=84種。

非負整數解:轉化為10個相同的小球裝入4個不同的盒子,可以有空盒,有c(10+4-1,4-1)種。

(3)x個相同的球放入y個不相同的盒子中,要求每個盒子至多n個球至少0個球,共有多少種不同的放法?

首先對於m個球放入y個盒中,每個盒中至少乙個球的放法用隔板法可以得到,即相當於在m-1個位置中放入y-1個擋板將m個球分為y份,這樣每份至少為1,為

而x個球放入y個盒中,每個盒中至少0個球的放法相當於x+y個球放入y個盒中,每個盒中至少乙個球的放法,即相當於將x+y個球分入y個盒中,再從每個盒中取出1球,為

而對於指定t個盒子(例如1,2,3,···,t號盒子)中的球數至少為n+1個球的放法等同於將(x-t*(n+1))個球放入y個盒中,每個盒中至少0個球的放法,即(x-t*(n+1))個球放入y個盒中後,再在指定的t個盒中各放入n+1個球,為

根據容斥原理,每個盒子至多n球的放法為 總放法-所有指定乙個盒子的球數大於n的方法+所有指定兩個盒子的球數大於n的方法-所有指定三個盒子的球數大於n的方法+······

即為其中

題目鏈結

#include using namespace std;

typedef long long ll;

const ll mod=998244353;

ll n,m,k;

const ll m=2*1e5+5;

ll fact[m],ifact[m];//fact[i]是i的階乘,ifact[i]是階乘的除法逆元,兩者用於求組合數

ll pow_mod(ll n,ll k,ll mod) //快速冪求n^k餘m的結果

return res;

}void init()//初始化

}ll c(ll n,ll m)//求組合數

int main()

else

}printf("%i64d\n",ans%mod);

}return 0;

}

ZOJ3557利用隔板法分析排列組合

分類 數論 2013 03 25 19 50 58人閱讀收藏 舉報題目 how many sets ii 當然本題只要分析出來公式,然後利用lucas解都是浮雲了。本題由於p很大,所以就不能階乘預處理了。題意是 給乙個集合,一共n個元素,從中選取m個元素,滿足選出的元素中沒有相鄰的元素,這樣的選法一...

排列組合(遍歷)回溯法

這裡有乙個回溯函式,使用第乙個整數的索引作為引數 backtrack first 1,如果第乙個整數有索引 n,意味著當前排列已完成。2,遍歷索引 first 到索引 n 1 的所有整數 則 在排列中放置第 i 個整數,即 swap nums first nums i 繼續生成從第 i 個整數開始的...

組合數 隔板法

隔板法是組合數學的一種重要思想 一般表現形式為把m個物品放入n個盒子裡 n m letax壞了tat 每個盒子裡必須有至少乙個物品 所有物品完全相同 求方案數 可以在邏輯上將物品放入乙個一維的長盒子裡 然後在任意兩個物品之間插入隔板 那麼我們可以將問題簡化為在m 1個空位中插入n 1個隔板 從而將物...