组合数学
组合数学一直都是我们这些菜鸡颓废的地方,很多菜鸡往往受不住组合学的寂寞而坠落到人生深谷(本菜鸡就是一个)
好了,扯淡解释
对于组合数学,我们并不陌生,从小学六年级的奥数书上就早早地接触了,然后在预习高中数学的时候也接触了一下
组合数学,是数学的一个分支,包括很多的原理,抽屉原理,加法原理,乘法原理,容斥原理
他们为解决问题提供了思想方法
1、抽屉原理(鸽巢原理)
抽屉原理可以描述为 :把n+1个东西放入n个抽屉,至少有一个抽屉放了两个或两个以上的东西
或者换一个角度说,把n-1件东西放入n个抽屉,则至少有一个抽屉是空的
很简单自己模拟一下
2、加法原理
加法原理不在赘述
使用加法原理要注意A事件和B事件的方式不能重叠,也就是一个方式只能属于一个事件,不能属于两个事件
3、乘法原理
乘法原理不在赘述
使用乘法原理要注意A事件和B事件互相独立,每一步都关系到下一个步骤
4.容斥原理
设A,B为全集U的任意两个子集,则(A∩B)=(A)∪(B)×(A∪B)=(A)∩(B)
其中括号表示补集,因为我不会LAXE,打不出来符号
其实容斥原理可以推广到n子集,设A1 A2 A3 A4…为全集U的任意n个子集
则:
所有的A的U的补集=每一个A的补集的∩
所有的A的∩的补集=每一个A的补集的∪
所谓的容斥就是包容和排斥的总称
也就是负负得正,反反的正的一个表现
也没啥不好理解的
容斥原理如果用二进制来会更正解更完美
ll tmp,cnt,S=1,ans=0;
ll n=(1<<n);//一共的集合
for(int i=1;i<n;i++)
{
tmp=i;cnt=0;S=1;
for(int j=1;j<=n;j++)
{
if(tmp&1)//最低位是1
{
++cnt;
S/gcd(S,a[j]);
S*=a[j];
if(S>m) break;
}
tmp>>=1;
}
if(cnt&1) ans+=m/S;
else ans-=m/S;
}
例1:三角形距离
在边长为2的等边三角形中放5个点,那么至少存在2个点,它们之间的距离小于等于1
证明这个问题
根据抽屉原理可以画出一个三角里包含着一个道理着小三角形的图形,这个问题就可以转化成一个n个点放在n-1个点的抽屉问题
例2:四位奇数
有多少个没有重复数字并且能被5整除的四位奇数?
啊啊啊…
根据排列组合的推理就能明白
被5整除的个位只能是一种方案,千位不能是5和0所以有八种方案,十位和百位只要不是5和千位上的数字就行,综上,根据乘法原理,有187*8=448种
例3:同学排队
让8位同学站成一排,要求A、B两位同学互不相邻,有多少种排法
先不考虑不相邻的条件,共有8!种排法,接着考虑7位同学的排法,有7!个排法,再将B排在左右的情况,所以AB相邻的情况有2×7!个方案,那么不相邻的方案就有8!-2×7!个方案
例4:统计社团
一个班级中有20人学习英语,有10人学习德语,有3人同时学习英语和德语,共有多少人学习外语?
如果用简单的算法来计算,真的很简单 20+10-3=27
但是这么简单的题我偏用容斥原理来做…
用集合A、B分别表示英语和的德语的学生,那么学习外语的学生就用|A∪B|来表示,应用容斥原理,|A∪B|=|A|+|B|-|A∩B|=27
例4:统计社团2
一个班级有50人,有9人语文满分,12人数学满分,14人英语满分;6人语文数学同时满分,3人语文英语同时满分,8人英语数学同时满分,2人三门课都得了满分;问,没有满分的是谁?至少一科满分有几个
其实这种问题需要把实际问题和集合问题学会灵活得转化,用集合表示实际问题,用实际问题升华集合,都是重要的,并且这一类题都需要从长远的大局来看,用全局减去另一部分就能得到我想要的东西
组合学的问题大概分为:
1.存在性:判断满足某个条件的情况是否存在
2.计数性:存在多少个满足某个条件的情况
3.构造性:如果已判断出 某个条件的情况是存在的,那么如何构造
4.最优性:找出某个条件标准下的最佳构造方案
组合
组合问题是这其中的一个分类,他的中心问题是如何按照一定的规则来安排一些物体,具体可以分为这四种问题:
当然这几个问题是很广泛的,适用在所有的排列组合问题中,甚至说所有的所有的问题都可以这样分类
好了,言归正传
对于排列组合学的思路通常为:
1.只取要的;把各种符合条件的情况枚举出来,再利用加法原理求和
2.先全部去 ,在减去不要的;这种方法非常常用
3.先取后排;先把小问题的符合条件的排列或组合计算出来,再根据乘法原理求积
从 n个元素的集合S中无序选取r个元素,叫做S的一个组合,所有不同组合的个数叫做组合数,记作C,特殊规定C(n,0)=1
我们很容易推导出以下公式:
1.C(n,r)=C(n,n-r)
2.C(n,r)=C(n-1,r)+C(n-1,r-1)
3.C(n,0)+C(n,1)+…+C(n,n)=2n
第三个公式叫做二项式定理,好神奇,好厉害,好佩服
例1:
一班有10名同学,二班有8名同学,要在每个班级选出2名学生参加一个班会,有几个选法
乘法原理:C(10,2)×C(8,2)=1260(人)
例2:
某班有10名同学,其中4名女同学,要在班级选3名同学参加座谈会,其中至少有1名女同学
运用组合数以及加法原理,共有C(4,1)×C(6,2)+C(4,2)×C(6,1)+C(4,3)×C(6,0)
也就是枚举多个组合情况
例3:
仅含有数字1和0的10位正整数中,能被11整除的有几个?
一个正整数能被11整除的充分必要条件是它奇数位上数字之和与偶数位上数字之和的差是11的倍数
如果进行推导公式就和上一道题差不多,奇数位必须满足5位,偶数位必须满足4位,于是各个位的方案再加起来就好了
排列
在组合学中 ,根据有无顺序,一般会划分为排列问题和组合问题,排列与组合根本就在于,排列的元素顺序一换则又是一个新排列,组合的元素不讲究顺序
1.从n个元素的集合S中,有序的选取r个元素,叫做S的一个r排列,不同排列总数叫做A(n,r)有的时候用P;这种排列叫做选排列
A(n,r)=n×(n-1)×(n-2)×(n-3)×…×(n-r+1)=n!/(n-r)!
读作n的降r阶乘,特别地A(n,n)
2.从n个不同元素中可以重复地选取m个元素的排列,叫做相异元素可重复排列
其排列方案数为nm种
3.如果再n个元素中,有n1个元素彼此相同,有n2个元素…又有nm个元素彼此相同,并且n1+n2+n3…=n,则这n个元素的全排列,叫做不全相异元素的排列;其排列数计算公式为n!/(n1!×n2!×…nm)
4.如果n1+n2+n3+…=r,则这n个元素中选取r的选排列叫做不全相异元素的选排列
5.在一个数的全排列中,将Ai=i的排列去掉,剩下的排列叫做错位排列
又叫做装错信封问题,是一个很牛的人提出来的
一个人写了n封不同的新以及相应的n个不同的信封,他把这n封信都装错了信封,装错了几种方案
公式:用D表示错位排列的个数D=n!×(1-1/1!+1/2!-1/3!+1/4!..)
D(n)=(n-1)×[D(n-1)×D(n-2)],D[1]=0,D[2]=1
证(wo)明(bu)略(hui)
6.从n个不同元素中选取r个元素,不分首尾地围城一个圆圈地排列叫做圆排列,排列方案:A(n,r)/r;如果r=n,则有n!/n=(n-1)!种
例1:
将1、2、3、4、5五个数排列,要求4一定排在2的前面,问有多少排法:
因为1、3、5的排列先后没有要求,所以可以把1、3、5做全排列,有3!种,假设1、3、5构成一种排列方法abc,然后我们把2、4王其中插入,先插4,再插2,那么有4个方法插4,对于每一种,2也有4、3、2、1个插法,根据加法原理,2、4有4+3+2+1=10个方法,再根据乘法原理,最后解为3!×10=60种
例2:
有3个相同的黄球,2个相同的蓝球,4个相同的白球排成一排,问有多少种不同的排法?
根据不全相异的元素的全排列公式,(3+2+4)!/(3!×2!×4!)=1260
例3:
把两个红球,一个蓝球,一个白球放到10个编号不同盒子,每个盒子最多放1个,有几个方法
不全相异的元素的选排列公式,A(10,4)/(2!×1!×1!)=2520
例4:
书架上有6本书,编号分别为1~6,取出来再放回去,要求每本书都不在原来的位置,有几个方案?
错位排列模板,直接用公式
例5:
有男女各5人,其中3对是夫妻,沿10个位置的圆桌就座,如果每对夫妻都要坐在相邻的位置 ,问有多少个排法?
虐狗啦!
先让3对夫妻中的妻子和其他4人就坐,根据圆排列公式,共有6!种方法,然后让每一位丈夫都可以坐在妻子的左右边,共6!×2×2×2=5760种方法
排列组合经典例题
接下来,我会将初赛涉及到的排列组合结业,更深一步的地理解排列组合
常见的计数方法:
1.特殊优先,特殊元素,优先处理,特殊位置,优先考虑
(1)六个人站成一排,甲不在排头,乙不在排尾的排列数;乙在排头有A(5,5)种,乙不在排头也不在排尾有4×4×A(4,4)种,相加酒啊后了
(2)六个人站成一排,乙不在排尾且甲乙不相邻的排法数;分析多个类型,甲排尾,乙排头、甲排尾,乙不排头 、乙排头,甲不排头;甲不排尾,乙不排头;将这些方法加起来
总结,这一类问题通常需要将所有的情况列举出来然后求取,
2.捆绑插空
8个人排队
(1)甲乙必须相邻;甲乙必须相邻,就是把甲乙看成一个人(也即是专业术语中的捆绑)和7个人进行排列
(2)甲乙不相邻;总排列减去甲乙相邻的方案
(3)甲乙必须相邻并且与丙不相邻;先求甲乙必须相邻并且与丙相邻的情况,然后用总排列减去
(4)甲乙必须相邻,丙丁不相邻;两个捆绑
(5)甲乙不相邻,丙丁不相邻;