排列组合 ——插隔板

排列组合

——插隔板

I.n个相同小球分成m部分,每部分可以没有球。

在n+(m-1)个数中选择(m-1)次数作为隔板,其它的数作为小球。Count=C(n+m-1,m-1)。

II.n个相同的小球分成m部分,每部分至少有1个小球。

每个在相邻小球的中间,有n-1个隔板,从n-1个隔板中选取m-1个隔板,从而分成m部分。

Count=C(n-1,m-1)。

也可以认为:是提前从每部分提取1个小球,n个小球变为n-m个小球。可看成是把n-m个小球分成m部分,每部分可以没有球;然后把1个小球加入每部分,使每部分至少有一个球。

Count=C((n-m)+m-1,m-1)=C(n-1,m-1)

III. n个相同的小球分成m部分,每部分至少有k个小球。

与2同理,提前从每部分提取k个小球,n个小球变为n-m*k个小球。可看成是把n-m*k个小球分成m部分,每部分可以没有球;然后把k个小球加入每部分,使每部分至少有k个球。

Count=C((n-m*k)+m-1,m-1)=C(n-m*(k-1)-1,m-1)

当k=1,即变为情况II

IV.有n个座位依次从左到右排列,m个人选择座位,无其它要求。

第1个人有n种选择,第2个人有n-1种选择,……,第m个人有n-m+1中选择。

Count=P(n,m)

V. 有n个座位依次从左到右排列,m个人选择座位,任意两个人不能相邻。

把m个(人+座位)插入n-m个空座位的左右两旁,第1个人有n-m+1种选择,第2个人有n-m种选择,……,第m个人有n-m+1-(m-1)中选择。

也可以认为:提前提取m-1个座位,n个座位变为n-m+1个座位。可看成有n-m+1个座位依次从左到右排列,m个人选择座位,无其它要求;然后把1个座位加入所有相邻(指的不是座位相邻,而是指一个人向左/向右看第一个看到的人)的两个人的中间(m-1个座位),使任意两个人能相邻。

Count=P(n-m+1,m)

VI. 有n个座位依次从左到右排列,m个人选择座位,任意两个人之间至少有k个空位。

提前提取(m-1)*k个座位,n个座位变为n-(m-1)*k个座位。可看成有n-(m-1)*k个座位依次从左到右排列,m个人选择座位,无其它要求; 然后把k个座位加入所有相邻(指的不是座位相邻,而是指一个人向左/向右看第一个看到的人)的两个人的中间((m-1)*k个座位),使任意两个人之间至少有k个空位。

Count=P(n-(m-1)*k,m)

当k=1,即变为情况V

VII.有n个座位形成圆圈,m个人选择座位,无其它要求。

第1个人有n种选择,第2个人有n-1种选择,……,第m个人有n-m+1中选择。如果不考虑圆的位置编号,则一个状态顺时针旋转k位(k=0,1,…,n-1),状态都相同,结果在原来基础上除以n。

考虑圆的位置编号:P(n,m)

不考虑圆的位置编号:P(n,m)/n

证明P(n,m)/n是正数:

n-k必能整除(n,k)【括号指的是两个数的最大公约数】,若(n,k)<>1, n能被数k(1<=k<=n)所约分【即n=n/(n,k)】,那么n能用n-k代替【即(n-k)= (n-k)/(n,k)】,最终(n,m)必是n的倍数。

VIII.有n个座位形成圆圈,m个人选择座位,任意两个人不能相邻。

            To  

考虑圆的位置编号:

定义一个人A所坐的座位编号为1,然后座位编号按照顺时针的方向从1到n递增,编号为n的座位与编号为1的座位连接起来。

在编号为1的座位的和编号为n的座位中间切一刀,变成编号为1,2,…,n的一排座位。其中第n个位置不能坐人,第2个位置不能坐人,因为任意两个人不能相邻,而第1个位置座位有人坐。

题目转变成n-3个座位,依次从左到右排列,m-1个人选择座位,任意两个人不能相邻。

Count1=P(n‘-m‘+1,m‘)=P((n-3)-(m-1)+1,m-1)=P(n-m-1,m-1)

而A的编号可以为1,2,…,n,

Count2=n*P(n-m-1,m-1)

不考虑圆的位置编号:

即不考虑什么人坐编号为多少的位置,只考虑人之间的相对关系,如一个人的左边/右边是谁

m个人的位置顺时针旋转k位(k=0,1,2,…,n-1)【即第1个人的位置变为原来第(1+k)个人的位置,第2个人的位置变为第(2+k)个人的位置,依次类推】,有m种方案,但这里只看成1种方案,所以要除以m

Count3=n*P(n-m-1,m-1)/m

IX.有n个座位形成圆圈,m个人选择座位,任意两个人之间至少有k个空位。

考虑圆的位置编号:

定义一个人A所坐的座位编号为1,然后座位编号按照顺时针的方向从1到n递增,编号为n的座位与编号为1的座位连接起来。

在编号为1的座位的和编号为n的座位中间切一刀,变成编号为1,2,…,n的一排座位。其中第n个~第n-k+1个位置不能坐人,第2个~第k+1位置不能坐人,因为任意两个人之间至少有k个空位,而第1个位置座位有人坐。

题目转变成n-k*2-1个座位,依次从左到右排列,m-1个人选择座位,任意两个人之间至少有k个空位。

Count=P(n‘-(m‘-1)*k,m‘)=P((n-k*2-1)-((m-1)-1)*k,m-1)=P(n-m*k-1,m-1)

而A的编号可以为1,2,…,n,

Count2=n*P(n-m*k-1,m-1)

不考虑圆的位置编号:

即不考虑什么人坐编号为多少的位置,只考虑人之间的相对关系,如一个人的左边/右边是谁

m个人的位置顺时针旋转k位(k=0,1,2,…,n-1)【即第1个人的位置变为原来第(1+k)个人的位置,第2个人的位置变为第(2+k)个人的位置,依次类推】,有m种方案,但这里只看成1种方案,所以要除以m

Count3=n*P(n-m*k-1,m-1)/m

当k=1,即变为情况VIII。

时间: 2024-09-30 02:00:11

排列组合 ——插隔板的相关文章

高中数学排列组合

一.特殊元素和特殊位置优先策略 例1.由0,1,2,3,4,5可以组成多少个没有重复数字五位奇数. 解:由于末位和首位有特殊要求,应该优先安排,以免不合要求的元素占了这两个位置. 先排末位共有 然后排首位共有 最后排其它位置共有 由分步计数原理得 二.相邻元素捆绑策略 例2. 7人站成一排 ,其中甲乙相邻且丙丁相邻, 共有多少种不同的排法. 解:可先将甲乙两元素捆绑成整体并看成一个复合元素,同时丙丁也看成一个复合元素,再与其它元素进行排列,同时对相邻元素内部进行自排.由分步计数原理可得共有种不同

排列组合

(常考)错位排列 有N封信和N个信封,每封信都不装在自己信封里的排列种数记作Dn,则 D1=0,D2=1,D3=2,D4=9,D5=44,D6=265 一.相邻问题---捆绑法 不邻问题---插空法 对于某几个元素不相邻的排列问题,可先将其他元素排好,再将不相邻元素在已排好的元素之间及两端空隙中插入即可. [例题1]一张节目表上原有3个节目,如果保持这3个节目的相对顺序不变,再添进去2个新节目,有多少种安排方法? A.20 B.12 C.6 D.4 [答案]A. [解析] 以下内容需要回复才能看

【noi 2.6_9288】&amp;【hdu 1133】Buy the Ticket(DP / 排列组合 Catalan+高精度)

题意:有m个人有一张50元的纸币,n个人有一张100元的纸币.他们要在一个原始存金为0元的售票处买一张50元的票,问一共有几种方案数. 解法:(学习了他人的推导后~) 1.Catalan数的应用7的变形.(推荐阅读:http://www.cnblogs.com/chenhuan001/p/5157133.html).P.S.不知我之前自己推出的公式“C(n,m)*C(2*m,m)/(m+1)*P(n,n)*P(m,m)”是否是正确的. (1)在不考虑m人和n人本身组内的排列时,总方案数为C(m+

排列组合+组合数取模 HDU 5894

1 // 排列组合+组合数取模 HDU 5894 2 // 题意:n个座位不同,m个人去坐(人是一样的),每个人之间至少相隔k个座位问方案数 3 // 思路: 4 // 定好m个人 相邻人之间k个座位 剩下就剩n-(m+1)*k个座位 5 // 剩下座位去插m个不同的盒子==就等价n个相同的球放m个不同的盒子 6 // 然后组合数出来了 7 // 乘n的话是枚举座位,除m是去掉枚举第一个座位的时候,剩下人相邻的座位相对不变的情况 8 9 #include <iostream> 10 #incl

【HDU】5151 Sit Sit Sit(区间DP+排列组合)

题目大意:可以查阅网站的中文翻译,就不说了,是第24场Best Coder 思路: 这道这道区间DP,我也开始觉得其实区间DP是一种应用型的思想,做这类题目一个重要的点是在于题目情景的把握,这道题的一个情景就是数学的排列组合问题. 首先应用根据小区间推出大区间的思路,我们可以先固定一个位置k,k位置是最后做的位置,那么我们要算出在这种情况下符合的方法数,假如k是头或者尾,那不用说, 此时的方法为dp[i+1][j]或者是dp[i][j-1]; 假如k是有邻居的,那我们就要考虑邻居的颜色,如果颜色

排列组合常见解题方法

由 27 October in ss 中的一道题阐发: 拓展:把 \(n\) 个相同物品放入 \(m\) 个篮子, 若 (1) 篮子可以为空, 篮子不同:共有 \(C_{n+m-1}^{m-1}\) 种方案. (2) 篮子不可以为空, 篮子不同:共有 \(C_{n-1}^{m-1}\) 种方案. (挡板法) (3) 篮子可以为空, 篮子相同:方案递推式为 \(f(n,m)=f(n-1,m)+f(n,m-1)\). (4) 篮子不可以为空, 篮子相同:方案算式为 \(f'(n,m)=f(n-m,m

自然语言处理(NLP) - 数学基础(1) - 排列组合

正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先开始最为大家熟知和最基础的知识点吧, 排列组合. 虽然排列组合这个知识点大家是相当地熟知, 也是相当地基础, 但是却是十分十分十分地重要. NLP届掌门人斯坦福大学的Daniel Jurafsky(D. 朱夫斯凯)和科罗拉多大学James H. Martin(J. H. 马丁)在其NLP巨作<自然语言处

HDU--5396(区间dp+排列组合)

做这道题的时候,想到会不会是dp,然后发现dp可做,但是一直被自己坑到死. 枚举最后合并的那个位置,然后对于加减号的,分成的前后两个部分都有不同的组合方法, (a1+a2........) +  (b1,b2.............)         对于每个a,被加b的个数的阶乘次 ,对于每个b,被加a的个数的阶乘次 减法同理 乘法特殊一点 (a1+a2........) *  (b1,b2.............)  乘法分配率,直接将两部分的总和相乘即可 想到这些还远远没有结束,因为最

hdu 1799 (循环多少次?)(排列组合公式)

循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3051    Accepted Submission(s): 1117 Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次OP运算