noip复习之数学(1)——基本计数

1.加法原理:

各个事件互相独立。做一件事有n种方法,第i种方法有pi种方案,则一共有p1+p2+p3+...+pn种方案。

2.乘法原理:

各个事件相互关联。做一件事有n个步骤,第i个步骤有pi种方案,则一共有p1p2p3...pn种方案。

3.容斥原理:

img

img

4.常见的计数问题

问题一:有n个不同的数,选k个排成一排,每个数最多选一次,问有多少种排列方法

\(ans=P(n,k)=n*(n-1)*(n-2)*(n-3)*...*(n-k+1)=n!/(n-k)!\)(当n=k时为n!)

问题二:组合问题:同上,但无关顺序

\(ans=C(n,k)=n!/(m!(n-m)!)\)

组合数的几大性质:1.\(C(n,0)=C(n,n)=1\)

​ 2.\(C(n,m)=C(n-1,m)+C(n-1,m-1)\)

​ 3.\(C(n,k)=C(n,n-k)\)

​ 4.\(C(n,k+1)=C(n,k)*(n-k)/(k+1)\)

问题三:有k个元素,其中第i个元素有ni个,求全排列的个数

\(ans=(n1+n2+...+nk)!/(n1!*n2!*n3!*...*nk!)\)

问题四:有n个不同元素,每个元素可以选多次,一共选k个元素,有多少种方法

解答:设第i个元素选xi个,则问题转化为求x1+x2+...+xn=k的非负整数解的个数,令yi=x+1,则答案为y1+y2+...+yn=k+n的正整数解的个数,使用隔板法,则答案为C(k+n-1,n-1)=C(k+n-1,k)(即选n-1个位置放隔板,将其分成n部分)

\(ans=C(k+n-1,n-1)=C(k+n-1,k)\)

问题五:给定空间中n(n<=1000)个点,其中没有三点共线。每两个点之间都用红色或者黑色线段连接。求3条边同色的三角形个数。

分析:从反面考虑,求非单色三角形。在每个非单色三角形中,恰好有两个顶点连接两条异色边(不包含不在此三角形中的边)。如果一个顶点连接了ai条红边和n-1-ai条黑边,则这些边属于ai*(n-1-ai)个非单色三角形。又由于每个非单色三角形考虑了两次(对于d顶点,它与e定点一同连接了一条红边,若d,e,f三个顶点共同组成了一个非单色三角形,我们假设d和e分别连接了两条异色边,则此三角形一定被且只被计算了两次,见黑体字或画图尝试),故非单色三角形的个数为

\[\frac{1}{2}\sum_{i=1}^{n}a_i(n-1-a_i) \]

\[ans=\frac{n*(n-1)}{2}-\frac{1}{2}\sum_{i=1}^na_i*(n-1-a_i) \]

较难例题(UVa11401 Triangle Counting)

题意:

有多少种方法可以从1,2,3,...,n(n<=1e6)中选出3个不同的整数,使得以他们为三边长可以组成三角形

分析:写这道题的分析的时候已经是第三次看这道题了,尝试不看汝佳大神的题解自己口胡一遍。

​ 我们不妨先假设x为三角形中的最长边,且z<y<x,对于这样能组成三角形的三边x,y,z,一定满足三角形不等式,也即x-z<y<x<x+z,后面<=x+z的部分因为有了y<x,也就是我们假设的条件的存在,已经失去了其价值,所以我们可以大胆舍弃掉这个条件,所以最后得到的不等式应为x-z<y<x

(注意一下以下过程中我们枚举的应是z的大小,因为这样才能确定出y的解的个数,这次又卡在这里了)

当z=1,y无解;

当z=2,y一解(y=x-1)

当z=3,y两解(y=x-1,y=x-2)

...

通过数学归纳法,我们可以发现当z=t时,y有t-1个解,所以最终答案为1+2+...+(x-2)+(x-1),然后你高兴地打完程序提交,结果却出乎意料,你在众多AC提交中成为了那鲜红的一抹WA

原因在哪里呢?关键就在于题干中所说的不同,我们得到的答案中包括了y=z的情况,同样重要的是我们把每个三角形都算了两遍,并没有完成z<y的约束,所以我们考虑剔除掉这些情况。

解决方法很简单(就怪了),对于每一个x,从y=x/2+1开始算起,到y=x-1为止,总共有

\[x-1-\lfloor \frac{x}{2} \rfloor=\lfloor\frac{x-1}{2}\rfloor \]

主要难理解这个式子的原因是向下取整,或许你自己写的时候是可以分奇偶讨论的,如:

\[x为奇数时,x-1-\frac{\left(x+1\right)}{2}+1=\frac{x-1}{2}\\ x为偶数时,x-1-\left(\frac{x}{2}+1\right)+1=\frac{x-2}{2} \]

令c(x)为最大边长为x的三角形的个数,则

\[c(x)=\frac{1}{2}\left(\frac{(x-1)*(x-2)}{2}-\lfloor\frac{x-1}{2}\rfloor\right) \]

\(f(n)=c(1)+c(2)+...+c(n)=f(n-1)+c(n)\)

posted on 2019-10-01 20:03  dolires  阅读(237)  评论(0)    收藏  举报

导航