对信息学奥赛一本通第三章问题求解的总结

最近在备战csp-s看到这一章,被本章中大量知识搞晕,身为一个高中生有绝大部分知识是不需要掌握的。现在我对这些知识这个总结。

排列与组合(我学这个的时候还没学到这些知识)

  排列数

从n个不同元素中选取m个元素,按一定循序排列,有几种情况。

P/A(n,m)=n*(n-1)*...*(n-m+1)

  组合数

从n个元素中选取m个元素,不光循序如何,有几种情况

C(n,m)=A(n,m)/m!=(n*(n-1)*...*(n-m+1))/m!

    排列数和组合数最大的区别在于是否有序,比如我将用一到五,五个数字组成的三位数中123和321是不同的情况,此时用排列数,但我从一到五随机选三个数字此时123和321是同一种情况应该用组合数。这里讲个不把两个数搞混的方法,应为组合数一般会小与排列数所以它要/m。

常见计数方法

 特殊优先

例:六人站成一排,求:

1.甲不在排头,乙不在排尾,有几种排列数

分类讨论,第一类乙在排尾,有A(5,5)种排法;第二类乙既不在排头,也不在排尾4*4*A(4,4)这个第二类之所以是这样是因为https://img-blog.csdnimg.cn/7d6d8a522fdd4d119fbd282e079c3470.jpeg,总结论数为A(5,5)+4*4*A(4,4) =504                                       

2,甲不在排头,乙不在排尾,甲乙不相邻,有几种排列数。这题可以直接用上一题的结果减去甲乙相邻的情况4*4*A(3,3)。(画上一题的图可以解)或者用书上给的分类讨论,我自己认为直接减会更加简单(我不会说是我看不懂它的解法

总结从上面两题看出当元素中某些元素有特殊要求,我们可以对其进行单独分析先确定它的位置再去确定,其它元素的位置,同时考虑它的位置对其它元素的影响(它占了别的元素就没位置了)

  捆绑与插空

    捆绑

例:8人排队
1.甲乙必须相邻:将甲乙捆绑,A(7,7)*2                  
2.甲乙不相邻:总情况减甲乙相邻,A(8,8)-A(7,7)*2 
   

    插空

某人射击8枪,连续中三枪,有几种情况
可以将连续中的三枪看成同一种情况,即在四枪空枪形成的空隙中5个中选2个排列A(5,2)

  总结,捆绑和插空都是字面意思,要多做题才能掌握。

  不定方成正整数解的个数

 例:x1+x2+x3+...xn=M

书中对这题的答案很详细,我只能说重在理解,理解不了背公式也是很好的方法。
公式C(M-1,N-1)对公式分析,就是将右边的元素个数减一,左边的也减一,第二题就是这样的思路。

几个特殊数列

下面的两个数列不是一般高中生能理解,该理解的毕竟实在太难并且用处不大,一般也就3~4分。
这些东西就像斐波那契数列那样只要发现规律套就好了,因为我也不理解我只简单说一下。

Catalan数

直接上公式hn=\frac{1}{x+1}*C(2n,n)

这个公式书中给了两个推导式

第一个式子是在一个n+2条边的突边行中画n-1条不相交的对角线将多边形分为n个三角形。设hn为n条边时的总情况数,令h0=1。接下来我们选一条边为基边,画三角形将图像分割成三个图形,一边为k边形,另一边为n-1-k边形,此时总方案数为hk*h(n-1-k)因为0<=k<=n-1所以总方案数为hn=\sum_{k=0}^{n-1}hk*hn-1-k此式子即为catalan数列

第二个式子,先要提出个定理:n个+1和n个-1构成的2n项并且其所有前缀和大于0,相当于第n个Catalan数列

证明: n个+1和n个-1构成的集合中符合定理的称为可接受的。令An为可接受序列的数量,Un为不可接受序列的数量。对于一个不可接受序列一定存在一个最小的k使前k项的和小于0,显然k为奇数,且第k个数为-1,对前k个数取反+1变-1,-1变+1,后面的数保持不变,得到新数列N,这个数列有n+1个+1,和n-1个-1(因为前k个数-1比+1多一,取反后+1比-1多一,而后面的数不变,原本+1数量等于-1数量,改变后+1数量会比-1数量多一),此时新数列N和原数列是一一对应的映射关系,N数列数量会等于U数列数量,N数列数量为C(2n,n+1)。易得An+Un=C(2n,n),An=1/n+1*C(2n,n),定理成立。

应用
1.括号序列:一个有n个括号,有几种合法排序
将(视为+1,)视为-1,应为所有合法的序列的前缀和都大于0,所以看作Catlan数
2.有2n个人排队进入剧场,入场费50元,每个游客带着一张50元或100元,问如何排列使剧场都能找的开零钱,剧场一开始无零钱。将50元视为+1,100元视为-1,最后依然是Catlan数

第二类stirling数

S(n,k)表示将n个元素的集合划分成k个集合的方案数

递推关系 S(n,k)=S(n-1,k-1)+S(n-1,k)*k;S(n,1)=1,S(n,n)=1

应用将6个球放到3个盒子里,求总方案数,答案:S(6,3)

容斥原理和错位排列

容斥原理

先将全部情况算出再减去重复的情况,画Venn图

 错位排列

对于一个1...n的任意排列,当任意第i位不是数字i时为错位排列,对于任意数字n有几种错位排列

分析:利用容斥原理用总情况减去第i位是i的情况设第i位是i的集合为Ai;错位排列个数为Dn,Dn=n!-|\bigcup_{i=1}^{n}Ai|,设有k个数在固定位置上,另外(n-k)个数任意排列,1<=k<=n\sum \left | Ai1\cap Ai2\cap Ai3...\cap Aik\right |=\binom{n}{k}*(n-k)!=\frac{n!} {k!*(n-k)!}*(n-k)!=\frac{n!}{k!}
综上D_{n}=n!(1-\frac{1}{1!}+\frac{1}{2!}-\frac{1}{3!}...+(-1)^{n}*\frac{1}{n!}),同时当n较小时应该用递推式D_{n}=(n-1)*(D_{n-1}+D_{n-2}) ;D_{1}=0,D_{2}=1

鸽巢原理

鸽巢原理:若有n个笼子和kn+1只鸽子,所有鸽子都被关在鸽笼里,那么至少有一个笼子有至少k+1只鸽子。

nim取石子游戏

最简单的取石子游戏

一堆石子,共n个,两人轮流来取,至少取1个最多取m个,当n mod(m+1)=0时,先手必败;否则先手必胜

SG函数

  先引入两个概念,一个是p-position,意味先手必败,也就是必败态,另一个是n-position意味先手必胜,也就是必胜态,需要注意两点,无论是必胜态还是必败态都是对于先手而言的,同时这个状态都是当前的状态,而不是结果的状态,对一局游戏而言会在必胜态和必败态之间转化。关于必胜态和必败态有一个重要性质,无法进行任何移动是必败态,能移动到必败态的一定有一个必胜态,必败态走到的都是必败态。
  最后引入SG函数:最终状态的SG函数为0,其余状态的SG函数的值为它后继所有数中的最小非负整数,如1,2,3的最小非负整数位0,2,3的最小非负整数为1,如果当前SG函数为0,那么当前状态必败,否则必胜。

nim取石子游戏

现有若干堆石子,两人轮流操作,每人每次可以从任意一堆中取若干个,但是不能多取,取完最后一个石子的人获胜。对于这题我挂个视频
[解题十分钟] 第三期 为什么取石子游戏会和异或有关系?_哔哩哔哩_bilibili
这个视频中的nim函数就是SG函数,从中得到当每堆个数互相异或后结果大于0时为必胜态,同时在视频中我们得知,对于任意一个必胜态我们可以在某一堆中取某一值使整体异或值为0,从必胜态转变为必败态。

例:有5堆石子,个数为3 5 7 19 50,甲乙两人轮流取,甲先手,甲有没有必胜策略,如果有他要取哪一颗?

先判断是否有必胜态,对整体异或求值为32大于0,所以有必胜态,应为32的二进制最高位为4位,原石子中只有50比第4位大,50xor32=18,也就意味着剩下18个,取32个,我们可以对取完的结果进行验证会得到异或值为0,进入必败态。

最后图论以后再总结,我这玩意主要给自己看的所以有不好的地方希望大家指出。

  
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值