统计的力量-线段树++

统计的力量-线段树++

ID:45192920

大小:7.27 MB

页数:102页

时间:2019-11-10

统计的力量-线段树++_第1页
统计的力量-线段树++_第2页
统计的力量-线段树++_第3页
统计的力量-线段树++_第4页
统计的力量-线段树++_第5页
资源描述:

《统计的力量-线段树++》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、清华大学张昆玮统计的力量——线段树全接触2021年10月2日清华大学张昆玮2许多算法的本质是统计根据D.E.Knuth的分类方法计算机算法可以分为两类:数值算法与非数值算法其中的非数值算法包括:索引分类统计……2021年10月2日清华大学张昆玮3线段树?大家都说:……常数很大?不好写?难调试?想不到?……2021年10月2日清华大学张昆玮4一个悲剧POJ上的某题,时限很紧……大家都用树状数组,但是有人只会用线段树呢?而且我可以轻易改出一道不能用树状数组的题在线段树一次次TLE后,有一个ID发帖抱怨“

2、下次写一个汇编版非递归线段树,再超时?”可是大家都知道,超时的代码已经2k了。其实我写的就是线段树。很快,而且不到1k。2021年10月2日清华大学张昆玮5线段树用于统计运行速度快适应能力强编写方便结构简单容易调试关键在于灵活实现线段树,从何而来?为什么在《算法导论》和黑书中都难见到其踪迹?2021年10月2日清华大学张昆玮62021年10月2日清华大学张昆玮7计算几何!计算几何在长期的发展中,诞生了许多实用的数据结构。区间查询,穿刺查询都是计算几何解决的问题作为特例中的特例,线段树解决的问题是:一

3、维空间上的几何统计高维推广(kd-tree&…)可以进行正交查询由于竞赛中涉及计算几何的内容有限,不展开2021年10月2日清华大学张昆玮8真正有用的是“点树”线段树把数轴分成区间来处理如[8,10),[10,11),…实际上我们面对的往往是离散量竞赛中出现的线段树往往因此退化为“点树”即,最底层的线段只包含一个点:如:[8,9)中只有整点8而已在之后的讨论中,我们不再区别“点树”与线段树第一印象如果我给MM的第一印象不到80分的话……是不是老老实实地早点罢手比较好?2021年10月2日清华大学张昆

4、玮92021年10月2日清华大学张昆玮10最经典的问题:区间和[0,4)[0,2)01[2,4)23[1,4)?2021年10月2日清华大学张昆玮11核心思想:分治[1,4)in[0,4)左边,[1,2)in[0,2)Get1Get[2,4)in[2,4)虽然每次都有可能同时递归进入两棵子树,但每层实际上只访问了两个节点。为什么?因为查询是连续的啊……其实还有别的核心思想后面再讲……2021年10月2日清华大学张昆玮12因为查询是连续的?ABC如果同一层有三个被访问,依次为A,B,C查询是连续的,有

5、了A和C,就一定包括B在树中的兄弟那我直接用B的父亲来计算好了,为什么要用B?为什么用线段树?功利点说,没啥用的东西咱不学……2021年10月2日清华大学张昆玮13且慢直接把原数组处理成前缀和Fori=2tondoA[i]+=A[i-1]Ans(a,b)=A[a]-A[b-1]区区区间和,用的着线段树?2021年10月2日清华大学张昆玮142021年10月2日清华大学张昆玮15这是为什么呢?原因是区间和的性质非常好满足区间减法区间减法什么的最讨厌了!后面再说!不过直接前缀和不是万能的!如果修改元素的

6、话……2021年10月2日清华大学张昆玮16真正的作用数据结构修改元素取前缀和直接存储原数组O(1)O(n)直接存储前缀和O(n)O(1)线段树O(logn)O(logn)沟通原数组与前缀和的桥梁其实……(其实什么,后面再讲)怎么写?这个问题,本来是仁者见仁,智者见智的啊但是我要讲一点不那么“本来”的东西2021年10月2日清华大学张昆玮172021年10月2日清华大学张昆玮18朴素的递归算法访问线段如果要的是整条线段就直接返回如果与左子线段相交就递归处理如果与右子线段相交就递归处理合并所得到的解遗

7、憾的是,这种朴素的方法并不是那么容易实现而且存在严重的效率问题(常数太大)怎么办?2021年10月2日清华大学张昆玮19TLE从存储方式讲起工欲善其事,必先利其器。2021年10月2日清华大学张昆玮202021年10月2日清华大学张昆玮21几个不那么重要的问题虽然可以设计出三叉,四叉,……线段树但是我们先从二叉树开始登高必自迩,行远必自卑多叉怎么办后面再讲(这还要讲?自己研究去)为了不处理各种特殊情况,假设二叉树是满的!不是满的?你的总区间是[0,1000)?你就当作[0,1024)不就好了?202

8、1年10月2日清华大学张昆玮22堆式存储是关键1245367指针退休了?后面再讲……2021年10月2日清华大学张昆玮23一些简单的问题N的左儿子是2NN的右儿子是2N+1N的父亲是N>>1……不就是个堆存储么?不用讲了吧?2021年10月2日清华大学张昆玮24换成二进制看看吧!110100101111101112021年10月2日清华大学张昆玮25似曾相识?字母树!存放的是100,101,110,111四个串!每个节点存的是以这个节点为前缀的所有节点和例:1中存的是

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。