noip入门自学(NOIP训练营集训笔记)

本文作者潘恺璠参加过清北学堂NOIP2017训练营提高组精英班,笔记非常详细。特分享给大家!基本数论相关笔记较多,为方便大家阅读,我们预计会分为三到四篇文章介绍给大家。

点击一下标题可查看其他相关笔记!

NOIP训练营集训笔记—基本数论(一)

NOIP2019年冬令营正在报名中,寒假和元旦都会开课,欢迎大家咨询报名!欢迎咨询报名NOIP2019冬令营!<-点击查看

基本数论(二)

15.欧拉定理:

费马小定理的推广:aφ(m)≡1(mod m)。

补充一些同余的性质:

①反身性:a≡a(mod m)

②对称性:若a≡b(mod m),则b≡a(mod m)

③传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m)

④同余式相加:若a≡b(mod m),c≡d(mod m),则a±c≡b±d(mod m)

⑤同余式相乘:若a≡b(mod m),c≡d(mod m),则ac≡bd(mod m)

经典例题:给定数a、b、p,求ax≡b(mod p)的最小正整数解x。

BSGS算法——“北上广深算法”或“拔山盖世算法”:

令x=im-j,m=⌈sqrt(p)⌉,则aim-j≡b(mod p),

移项,有:(am)i≡baj(mod p)

(也就是[(x y)!/(x!×y!)]),才能表示从两种情况中选择往x、y之一走的概率。

所以最终的概率为(对所有情况进行求和):

noip入门自学(NOIP训练营集训笔记)(1)

这个式子很不好求啊!!肆意展示一下数学功底的时候到了!

我们改变枚举量进行化简!过程如下:

noip入门自学(NOIP训练营集训笔记)(2)

其中:

noip入门自学(NOIP训练营集训笔记)(3)

说明:在以上的推理过程中,打"*"的这一步和红框的推理过程:

①打红框这一步推理:

根据二项式定理,有(字丑不要介意;′⌒`):

noip入门自学(NOIP训练营集训笔记)(4)

类比一下,有a=q,b=(1-q),所以原式可以化简为(q 1-q)i=1i=1(太™聪明了啊!!)

②打"*"这一步推理:

直接是等比数列求和即可!

4.Problem 2.333333:

小葱想要过河,过河有两条路:

一条路有100个石头,每个石头有1/100的概率会挂掉。

另一条路有1000个石头,每个石头有1/1000的概率会挂掉。

小葱应该走哪条路呢?(请勿使用计算器)

noip入门自学(NOIP训练营集训笔记)(5)

5.Problem 3(这道题太丑被丢掉了):

小葱在平面上画了很多条平行等间距为l的直线,小葱将长度为1的针投到这个平面上,求针和直线相交的概率?

典型的蒲丰投针问题:

分情况讨论:

①当l≤1:

noip入门自学(NOIP训练营集训笔记)(6)

②当l>1:

noip入门自学(NOIP训练营集训笔记)(7)

6.Problem 4:

小泽在数轴上的0点处,他每次有r的概率向右走,有1-r的概率向左走,求小泽走到-1处的概率为?

解法:如果直接列式求和计算:大量组合数求和!卡特兰数!级数!(mmp看得我想死)

设到达x-1的概率为p,则p=(1-r)×1 r×p×p 第一步向左走到-1的概率 第一步向右走回到-1的概率(往左走两次到-1)

根据上式,变形得:rp2-p 1-r=0,解方程可得到:p=(1±|2r-1|)/2r,因为有绝对值,所以分类讨论2r和1的关系:

经过紧张又激烈的讨论,我们得出一个分段函数(r都可以取):

noip入门自学(NOIP训练营集训笔记)(8)

7.Problem 5:

小胡有一棵一个点的树,小胡会给这个点浇水,于是这个点会有的概率长出两个儿子节点。

每次长出新的节点之后,小胡又会给新的节点浇水,它们也都有的概率长出两个新的儿子节点。

小胡不希望自己被累死,所以小胡希望知道这棵树的大小是有限的的概率。

解法:这道题和上一题是一毛一样的!

8.经典题1:

给出n行m列矩阵,k次操作,每次操作选取一个子矩阵,子矩阵内的所有矩阵标记,做了k次操作内,被重复标记的标记为已标记。

求:k次操作后,对于左上角坐标为(x,y)的矩形,至少被1个子矩阵包含的概率为多少?

例如:下面一个2×2的矩阵:

noip入门自学(NOIP训练营集训笔记)(9)

当k=1时,有9种标记方法:

noip入门自学(NOIP训练营集训笔记)(10)

而我们总共能够标记1×4 2×4 4×1个矩阵,所以得到的概率为1/9×(1×4 2×4 4×1)=16/9。

推理过程:

假设k=1时,我们来观察一个3×4的矩阵:

noip入门自学(NOIP训练营集训笔记)(11)

要使得A包含这个红色的矩阵B,那么这个矩阵A的左上点和右下点应该在蓝色的区域,这样才能保证完全覆盖红色矩阵。

假设这个矩阵的左上的点为(x,y),右下的点为(n-x 1,m-y 1),在这个图形里面总共有:(1 2 3 … n)=[n×(n 1)×m×(m 1)]/(2×2)个矩阵,并且满足蓝色文字的条件后,矩阵一共有:x×y×(n-x 1)×(m-y 1)个,所以概率为:x×y×(n-x 1)×(m-y 1)/{[n×(n 1)×m×(m 1)]/(2×2)}。

9.经典题2:

有n个点,坐标为(x1,y1),(x2,y2),(x3,y3),…,(xn,yn),求一个圆,包含这所有的点,并且保证半径最小。

暴力解法:枚举三个点,算出圆,把剩下的点全部丢进去判断在不在里面,算法复杂度:O(n4)

优化暴力解法O(n3):

for(int a=1;a<=n;a )//往已知圆内一个一个地丢点

{

if(!in(p[a])) circle=cir(p[a]);//a不在圆内

circle=cir(p[a]);//构造以a位圆心的圆

for(int b=1;b<=a;b )

{

if(!in(p[b])) circle=cir(p[a],p[b]);//构造以a、b两点为直径的圆

for(int c=1;c<=b;c )

{

if(!in(c)) circle=cir(p[a],p[b],p[c]);//构造a、b、c三点共圆的圆

}

}

}

最优雅地优化O(n):利用C 中的一个函数叫:random_shuffle(随机打乱n个点的顺序),可以将时间复杂度优化到O(n),怎么样?很神奇很诡异吧??!

思想就是:随机选三个点形成一个圆,于是接下来的那些的点进入下面两个for循环的概率实际上很小!

noip入门自学(NOIP训练营集训笔记)(12)

欢迎咨询报名NOIP2019冬令营课程!<-点击查看详情

noip入门自学(NOIP训练营集训笔记)(13)

咨询方式:

司老师 18610112920 赵老师 18610112915 高老师18611056259 老师 18611083835 张老师 18610150289

定期推送帐号信息学新闻,竞赛自主招生,信息学专业知识,信息学疑难解答,信息学训练营信息等诸多优质内容的wx公众平台noipnoi

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页