统计的力量ppt课件.pptx
《统计的力量ppt课件.pptx》由会员分享,可在线阅读,更多相关《统计的力量ppt课件.pptx(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、清华大学 张昆玮*篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮2*根据 D.E.Knuth 的分类方法计算机算法可以分为两类:*数值算法与非数值算法*其中的非数值算法包括:*索引*分类*统计*篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮3*大家都说:*常数很大?*不好写?*难调试?*想不到?*篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛
2、的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮4*POJ上的某题,时限很紧*大家都用树状数组,但是有人只会用线段树呢?*而且我可以轻易改出一道不能用树状数组的题*在线段树一次次TLE后,有一个ID发帖抱怨*“下次写一个汇编版非非递归线段树,再超时?”*可是大家都知道,超时的代码已经2k了。*其实我写的就是线段树。很快,而且不到1k。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮5*运行速度快*适应能力强*编写方便*结构简单*容易调试*关键在于
3、灵活灵活实现篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*为什么在算法导论和黑书中都难见到其踪迹?2022年年12月月30日日清清华大学大学 张昆昆玮6篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮7*计算几何在长期的发展中,诞生了许多实用的数据结构。*区间查询,穿刺查询都是计算几何解决的问题*作为特例中的特例,线段树解决的问题是:*一维空间上的几何统计*高维推广(kd-tree&)可以进行正交查询*由于竞赛中涉及计算
4、几何的内容有限,不展开篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮8*线段树把数轴分成区间来处理*如8,10),10,11),*实际上我们面对的往往是离散量*竞赛中出现的线段树往往因此退化为“点树”*即,最底层的线段只包含一个点:*如:8,9)中只有整点8而已*在之后的讨论中,我们不再区别“点树”与线段树篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*如果我给MM的第一印象不到80分的话是不是老老实实地早点罢手比较好?
5、2022年年12月月30日日清清华大学大学 张昆昆玮9篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮10*0,4)0,2)012,4)231,4)?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮11*1,4)in 0,4)*左边,1,2)in 0,2)*Get 1*Get 2,4)in 2,4)*虽然每次都有可能同时递归进入两棵子树,但每层实际上只访问了两个节点。为什么
6、?*因为查询是连续的啊篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮12*ABC如果同一层有三个被访问,依次为A,B,C查询是连续的,有了A和C,就一定包括B在树中的兄弟那我直接用B的父亲来计算好了,为什么要用B?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*功利点说,没啥用的东西咱不学2022年年12月月30日日清清华大学大学 张昆昆玮13篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计
7、时计分系统是一种得分类型的系统*直接把原数组处理成前缀和*For i=2 to n do*Ai+=Ai-1*Ans(a,b)=Aa-Ab-1区区区间和,用的着线段树?2022年年12月月30日日清清华大学大学 张昆昆玮14篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮15*原因是区间和的性质非常好*满足区区间减法减法*区间减法什么的最讨厌了!后面再说!*不过直接前缀和不是万能的!*如果修改元素的话篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系
8、统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮16*数据数据结构构修改元素修改元素取前取前缀和和直接存储原数组O(1)O(n)直接存储前缀和O(n)O(1)线段树O(logn)O(logn)篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*这个问题,本来本来是仁者见仁,智者见智的啊但是我要讲一点不那么“本来本来”的东西2022年年12月月30日日清清华大学大学 张昆昆玮17篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日
9、清清华大学大学 张昆昆玮18*访问线段*如果要的是整条线段就直接返回*如果与左子线段相交就递归处理*如果与右子线段相交就递归处理*合并所得到的解*遗憾的是,这种朴素的方法并不是那么容易并不是那么容易实现*而且存在严重的效率问题(常数太大)篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*2022年年12月月30日日清清华大学大学 张昆昆玮19篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*工欲善其事,必先利其器。2022年年12月月30日日清清华大学大学 张昆昆玮20篮球比
10、赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮21*虽然可以设计出三叉,四叉,线段树*但是我们先从二叉二叉树开始*登高必自迩,行远必自卑*多叉怎么办后面再讲(这还要讲?自己研究去)*为了不处理各种特殊情况,假设二叉树是满的!*不是满的?你的总区间是0,1000)?*你就当作0,1024)不就好了?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮22*1245367篮球比赛是根据
11、运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮23*N 的左儿子是 2N*N 的右儿子是 2N+1*N 的父亲是 N 1*不就是个堆存储么?不用讲了吧?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮24*1 1010010111110111篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学
12、大学 张昆昆玮25*字母树!*存放的是100,101,110,111四个串!*每个节点存的是以这个节点为前缀的所有节点和*例:1中存的是所有四个以1开头的和。*似乎从 100 到 111 就正好是原数组*貌似下标减 4 就行了?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮26*我们可以直接找到一个数对应的叶子*不用自顶向下慢慢地找啊找*“直接加 4”多简单!*直接找到叶子?*无限遐想中篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得
13、分类型的系统*可以直接找到叶子?2022年年12月月30日日清清华大学大学 张昆昆玮27篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮28*124895101136121371415(0,5)?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮29*124895101136121371415(0,5)?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比
14、赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮30*Func Query(s,t)/询问从s到t闭区间*s=s 1,t=t+1;/变为开区间*s+=M,t+=M;/找到叶子位置*While not(s xor t)=1)do*If(s and 1)=0)Answer+=Trees+1;*If(t and 1)=1)Answer+=Treet 1;*s=s 1,t=t 1;篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮31*for(s=s+M
15、-1,t=t+M+1;st1;s=1,t=1)*if(s&1)Ans+=Ts1;*if(t&1)Ans+=Tt1;*篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮32*在将闭区间转化成开区间的时候可能越界1*理论上能放 0,2N)的树*其实只能查询 1,2N-2 的范围*切记切记篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮33*如果需要查询 0 就整个向后平移一下*所
16、有下标加一!*如果需要在0,1024)中查询1023结尾的区间?*慢!你的数据规模不是 1000 么?*如果真的要到1023,直接把总区间变成0,2048)*就是这么狠!篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮34*Func Change(n,NewValue)*n+=M;*Treen=NewValue;*While n 1 do*n=n 1;*Treen =Tree2n+Tree2n+1;篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系
17、统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮35*for(Tn+=M=V,n=1;n;n=1)*Tn=Tn+n+Tn+n+1;*没了?*没了。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮36*仅使用了两倍原数组的空间*其中还完整地包括了原数组*构造容易:*For i=M-1 downto 1 do Ti=T2i+T2i+1;*太好写了!好理解!*自底向上,只访问一次,而且不一定访问到顶层*实践中非常快,与树状数组接近*为什么呢?后面再讲。篮球比赛是根
18、据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮37*因为树状数组依赖于区间减法*区间减法什么的,最讨厌了后面再讲,再讲*反正如果只问问前缀和,不问区间和的话*那我也可以只用一倍空间!篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮38*124895101136121371415(,5)?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分
19、类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮39*124895101136121371415(,5)?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮40*124895101136121371415(,5)?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮41*1-No2-14-25-No3-No6-37-No篮球比赛是根据运动队在规定的比赛时间里得分多少
20、来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮42*这不就和树状数组一样了?*本来就应该一样。*回过头说,树状数组究竟是什么?*就是省掉一半空间后的线段树加上中序遍历*计算位置需要lowbit什么的*我们用的是先序遍历,符合人的思考习惯。但是,这个空间没必要省。费点空间能换来实现的绝对简单。篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮43*树状数组线段树篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,
21、因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮44*我之前用这种写法做过不少题*大家都说我的代码看不懂*我说这就是一个树状数组*写树状数组的人说没有lowbit*我说那就算是线段树吧*大家不相信非递归的线段树这么短*我:篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*懒惰即美德。2022年年12月月30日日清清华大学大学 张昆昆玮45篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统*噩梦的开始2022年年12月月30日日
22、清清华大学大学 张昆昆玮46篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮47*RMQ(Range Minimum Query)*区间最小值查询*线段树*支持区间修改:*某一区间的数值全部增加一个可正可负的数*暴力修改不灵了!篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮48*在线段树上的每个节点增加一个标记*表示这一区间被增加过多少*在自顶而下的递归过程中*如果看到标
23、记,就更新当前节点的值*并将标记下传*嗯?又要自顶向下?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮49*其实堆式存储也可以自顶向下访问*就是上下各走一次而已*但是我们有更好的办法(使劲想想就知道了)*不再下不再下传标记,而是随用随查*在自底向上的查询过程中*每向上走一层,就按照对应的标记调整答案*仔细想想很有道理。我们愿意把尽可能多的信息存放在树的根部,所以下传标记做什么?篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系
24、统*庄周梦蝶而已2022年年12月月30日日清清华大学大学 张昆昆玮50篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮51*一根线段,支持区间染色。询问区间是否同色?*区间染色需要使用染色标记1表示红色,2表示蓝色,3绿色,0杂色*询问的时候就直接看标记嘛篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮52*2为红色,3为蓝色,1为杂色修改3为红色查询1,杂色?*永久永久
25、化的化的标记就是就是值啊啊!值是自动维护的啊!*其实我们的修改算法在修改3的时候已经维护了1*自底向上顺便重算所有遇到的节点标记即可*If(Markx=0 and Mark2x=Mark2x+1)*Markx=Mark2x;篮球比赛是根据运动队在规定的比赛时间里得分多少来决定胜负的,因此,篮球比赛的计时计分系统是一种得分类型的系统2022年年12月月30日日清清华大学大学 张昆昆玮53*回到区间修改的RMQ*通俗地讲,标记就是一个相对的量*既然有了标记,值还有什么用?*或者说,如果值本身就是相对的,还需要标记?*如果我让所有的数都从零开始变化,那标记永久化之后,所有值都恒为零啊!*于是我们连值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统计 力量 ppt 课件
限制150内