隔板法
隔板法:
【定义】
隔板法就是在n个元素间的(n-1)个空中插入k个板,可以把n个元素分成k+1组的方法。
应用隔板法必须满足的条件:
(1) 所分成的每一组至少分得1个元素;
【公式】
把10个相同的小球放入3个不同的箱子,每个箱子至少一个,问有几种情况?
C(n-1,m-1)=C(9.2)
接下来才是重点(某个箱子可以为空)。
【隔板应用】
普通隔板法
例1. 求方程 x+y+z=10的正整数解的个数。
分析:将10个球排成一排,球与球之间形成9个空隙,将两个隔板插入这些空隙中(每空至多插一块隔板),规定由隔板分成的左、中、右三部分的球数分别为x、y、z之值(如下图)。则隔法与解的个数之间建立了一一对立关系,故解的个数为C(n-1,m-1)=C(9,2)=36(个)。
添元素隔板法
例2:将20个大小形状完全相同的小球放入3个不同的盒子,允许有盒子为空,但球必须放完,有多少种不同的方法?
分析:本题中的小球大小形状完全相同,故这些小球没有区别,问题等价于将小球分成三组,允许有若干组无元素,用隔板法.
解析:将20个小球分成三组需要两块隔板,因为允许有盒子为空,不符合隔板法的原理,那就人为的再加上3个小球,保证每个盒子都至少分到一个小球,那就符合隔板法的要求了(分完后,再在每组中各去掉一个小球,即满足了题设的要求)。然后就变成待分小球总数为23个,球中间有22个空档,需要在这22个空档里加入2个隔板来分隔为3份,共有C(22,2)=231种不同的方法.
例3: 把10个相同小球放入3个不同箱子,第一个箱子至少1个,第二个箱子至少3个,第三个箱子可以放空球,有几种情况?
我们可以在第二个箱子先放入10个小球中的2个,小球剩8个放3个箱子,然后在第三个箱子放入8个小球之外的1个小球,则问题转化为 把9个相同小球放3不同箱子,每箱至少1个,几种方法? C(8,2)=28
例4. 将20个相同的小球放入编号分别为1,2,3,4的四个盒子中,要求每个盒子中的球数不少于它的编号数,求放法总数。(减少球数用隔板法)
分析:先在编号1,2,3,4的四个盒子内分别放0,1,2,3个球,剩下14个球,有1种方法;再把剩下的球分成4组,每组至少1个,由例1知方法有C(13,3)=286(种)。
例5:有一类自然数,从第三个数字开始,每个数字都恰好是它前面两个数字之和,直至不能再写为止,如257,1459等等,这类数共有几个?
因为前2位数字唯一对应了符合要求的一个数,只要求出前2位有几种情况即可,设前两位为ab
显然a+b<=9 ,且a不为0
1 -1- 1 -1 -1 -1 -1 -1 -1 1代表9个1,-代表8个空位
我们要把9个1分成两组,但b可以为0,我们先给b一个1,然后就相当于10个小球放入两个(a,b)不同的箱子,每一个箱子至少放一个,C(9,1),但这是错误的,为什么?因为1不一定要全部放入。其实解决这个问题可以这么想,我们在引进一个盒子c来放ab取完剩下的1,所以报证c中球数大于0,所以要在增加一个球,题目就等价于,11个小球放入三个(a,b)不同的箱子,每一个箱子至少放一个,所以一共有 c(10,2)=45 .
添板插板法
例5另一种解法:
显然a+b<=9 ,且a不为0
1 -1- 1 -1 -1 -1 -1 -1 -1 - - 1代表9个1,-代表10个空位 (第一个没有因为a不能为0),我们可以在这9个空位中插入2个板,分成3组,第一组取到a个1,第二组取到b个1,但此时第二组始终不能取空,若多添加第10个空时,设取到该板时第二组取空,即b=0,所以一共有 c(10,2)=45
添板插板法就是添元素隔板法的变形。
选板法
例6: 有10粒糖,如果每天至少吃一粒(多不限),吃完为止,求有多少种不同吃法?
o - o - o - o - o - o - o - o - o – o o代表10个糖,-代表9块板
10块糖,9个空,插入9块板,每个板都可以选择放或是不放,相邻两个板间的糖一天吃掉
这样一共就是 2^9= 512啦
分类插板
例7: 小梅有15块糖,如果每天至少吃3块,吃完为止,那么共有多少种不同的吃法?
此问题不能用插板法的原因在于没有规定一定要吃几天,因此我们需要对吃的天数进行分类讨论
最多吃5天,最少吃1天
1: 吃1天或是5天,各一种吃法 一共2种情况
2:吃2天,每天预先吃2块,即问11块糖,每天至少吃1块,吃2天,几种情况? C(10, 1)=10
3:吃3天,每天预先吃2块,即问9块糖,每天至少1块,吃3天? C(8 ,2)=28
4:吃4天,每天预先吃2块,即问7块糖,每天至少1块,吃4天?c(6 ,3)=20
所以一共是 2+10+28+20=60 种
逐步插板法
例8 :在一张节目单中原有6个节目,若保持这些节目相对次序不变,再添加3个节目,共有几种情况?
-o - o - o - o - o - o - 三个节目abc
可以用一个节目去插7个空位,再用第二个节目去插8个空位,用最后个节目去插9个空位
所以一共是 c(7, 1)×c(8, 1)×c(9 ,1)=504种
几个思维含量的例题:
1.[ZOJ3557]How Many Sets II
给一个集合,一共个元素,从中选取个元素,选出的元素中没有相邻的元素的选法一共有多少种?
这道题是插板法的经典应用
首先我们拿出m个小球,还剩下n-m个小球。这n-m个小球一共有n-m+1个空(左右两边也可以),把这m个小球插入到这n-m+1个空里就是答案,即
这m个小球的编号取决于它插入的位置,所以和选哪个小球没关系
2.hdu 3037 Saving Beans
有n个不同的盒子,在每个盒子中放一些球(可以不放),使得总球数≤m,求方案数(mod p)
第一种方法:
设最后放了k个球,根据"隔板法"由方案数C(k+n-1,n-1),:
ans=C(n-1,n-1)+C(n,n-1)+C(n+1,n-1)+……+C(n+m-2,n-1)+C(n+m-1,n-1)
=C(n+m,n);(mod p)
第二种方法:
这个题和原来不一样的地方:总球数≤m,一般我们就是总球数就是m,所以我们可以增加一个盒子,现在n+1个盒子,现在假设就要放m个球,n来来放k个球,剩下的m-k就放在那个我们增加的盒子里,这样n个盒子的组合球数就是我们要求的,所以题目等价于m个球放入n+1个盒子中,盒子有里球数可以为0,添元素插板法,每一个盒子都增加一个球,即m+n+1个球放入n+1个盒子,c(m+n,n)为答案
---------------------
作者:pxlsdz
来源:CSDN
原文:https://blog.csdn.net/sdz20172133/article/details/81431066
相关阅读
1、0-1背包问题 0-1背包问题:有一个贼在偷窃一家商店时,发现有n件物品,第i件物品价值vi元,重wi磅,此处vi与wi都是整数。他希望带走
概述 手写排序算法几乎是程序员面试必问的题目,大多数人都会选择写冒泡排序,如果此时你写的是其他改进过的排序算法,相信会让面试官
执行一般的sql更新语句为update table_name set column_name=value where column_name1=value1;但是我们有时候需要将某个表用的
数三退一,就是指很多个小朋友围成一个圈,从第一个开始数1.2.3. 第三个小朋友就退出 这个圈,以此类推。第一种方法,以面向过程的方式,此
淘宝白号是那种没有认证过的淘宝小号,对于卖家来说,淘宝白号的用处大着呢,像淘宝刷单是可以用淘宝白号去刷单的。那么淘宝白号要不要