zkw线段树讲稿统计的力量线段树
- 格式:ppt
- 大小:6.16 MB
- 文档页数:101
『zkw 线段树及其简单运⽤』<更新提⽰><第⼀次更新>阅读本⽂前,请确保已经阅读并理解了如下两篇⽂章:<正⽂>引⼊这是⼀种由THU −zkw ⼤佬发明的数据结构,本质上是经典的线段树区间划分思想,采⽤了⾃底向上的⽅式传递区间信息,避免的递归结构,其代码相对经典线段树更简单,常数更⼩,易于实现。
统计的⼒量-源⾃。
基础⾮递归接下来,我们将讲解zkw 线段树的第⼀种实现形式,⽤于单点修改 区间查询,我们以查询区间最⼤值为例来讲解。
建树普通线段树需要建树,zkw 线段树当然也需要建树。
考虑线段树的⼀个性质,其树上的叶节点代表的往往都是形如[x ,x ]的元区间,⽽且除最后⼀层外,线段树是⼀颗满⼆叉树,所以我们要把这颗线段树的数组⼤⼩先申请好了。
⼀棵满⼆叉树有x 个节点时,它有x +12个叶⼦节点,⽽我们需要⾄少n 个叶⼦节点的线段树,即使x +12≥n ,那么我们设x =1,在x +12<n 时不断执⾏x ∗=2,就能得到⾜够⼤⼩的线段树下标base ,由于线段树的叶⼦节点可能分布在两层,所以保险起见,我们还需再将x 扩⼤⼀倍,即在x +1<n 时不断执⾏x ∗=2就可以了。
得到合适的下标位置后,将1−n 下标位置的原数据直接存⼊线段树的叶⼦节点即可。
其实,我们还需将下标再扩⼤两个位置,即需要保证x >n ,才停⽌执⾏x ∗=2。
其原因是这样的:在执⾏区间查询操作时,我们需要将查询区间[l ,r ]更改为(l ,r )(关于原因,我们之后再分析),才便于zkw 线段树的查询,那么在询问[1,n ]时,可能为调⽤到[0,n +1]的原下标,所以还需再扩⼤两个位置。
得到了合适的下标base 并将1−n 的数据存⼊对应位置后,当然我们还要对1到base −1的线段树位置进⾏区间更新,这个普通的更新就可以了。
Code :单点修改直接在叶节点上修改对应的值,然后更新其每⼀个⽗节点即可。
(精品教案)《统计》讲课稿范文(通用5篇)《统计》讲课稿范文(通用5篇)作为一名教学工作者,总归要编写讲课稿,借助讲课稿能够有效提升自个儿的教学能力。
优秀的讲课稿都具备一些啥特点呢?下面是小编收集整理的《统计》讲课稿范文(通用5篇),仅供参考,希翼可以帮助到大伙儿。
【教材分析】《统计》是义务教育课程标准实验教科书数学(人教版)下册第9单元的内容。
原教材上是一幅教师带领学生举行实地观看、统计的插图。
关于没有条件、别能实地统计的学校,这部分内容又该如何上呢?我将教材中的盆花变成纸花,一排一排钉在黑板上,便于学生数数、统计。
巩固练习中,原教材是让学生统计全班每人的生日。
但关于农村小学低年级的儿童来讲,大多数学生全然记别得自个儿的生日。
所以,我设计了几份统计表供学生举行练习。
【学生分析】全班54名学生。
学生的思维比较活跃,有一定合作交流学习的能力。
教师所要做的算是设计、组织学生举行有价值的统计活动。
【教学目标】1、初步体验数据的收集、整理、描述和分析过程,会用简单的办法收集整理数据。
2、初步认识条形统计图和简单的统计表;能依照统计表中的数据提出并回答简单的咨询题。
3、培养合作意识。
【教学流程】一、激趣、引入、感知。
师:小朋友,今天我们竞赛一下,看哪组同学表现得最好,老师将送给他们红五星。
你们看,(出示各XXX花)有一位一年级的小朋友在学校各方面的表现都别错,得到了那么多的花!这些花美丽吗?这些花有几种颜群?讲讲有哪些颜XXX?怎么样才干懂各种颜群的花有几朵?(让学生自个儿想方法。
)师生共同数出红花的朵数。
师:我们刚刚数数的过程算是对数据举行统计。
(板书:统计)师:大伙儿想把各群的花有几朵统计下来吗?老师给大伙儿请来一具好帮手,看例1。
【创设与学生日子实际相同的学习情境,激发了学生的学习积极性。
继续引入课题,朴实自然,也渗透了思想教育。
】二、教学例1。
教师出示条形统计图,并讲明:图中的四根条形柱分不表示下面所列花的朵数。
线段树讲解浅谈线段树在信息学竞赛中的应⽤岳云涛yyt @ comindeWuhan University【摘要】本⽂介绍了⼀种⾼效的基于分治思想的数据结构——线段树,具体讲解了线段树的建树,查找,删除,统计等基本操作。
并结合了⼀些例题深⼊研究了线段树的基本性质和线段树的应⽤⽅法。
⽂章最后给出了⼀些线段树的练习题⽬。
【关键词】数据结构⼆叉树线段树【⽬录】引⾔ (3)1 线段树 (3)1.1 线段树的基本结构 (3)1.2 线段树的性质 (4)1.3 线段树的基本存储结构和操作 (4)2 线段树的初级应⽤ (9)2.1 例题:City Horizon (9)2.2 例题 Joseph Problem (12)3 线段树的进阶应⽤ (15)3.1 例题 Frequent Values (15)3.2 例题 K-th Number (17)4 线段树的⼀些推⼴应⽤ (17)4.1 多维线段树 (17)4.2 线段树与其他数据结构的组合 (18)5 线段树应⽤总结 (19)6 线段树练习题⽬推荐 (19)【正⽂】引⾔在信息学竞赛中,我们经常会碰到⼀些跟区间有关的问题,⽐如给⼀些区间线段求并区间的长度,或者并区间的个数等等。
这些问题的描述都⾮常简单,但是通常情况下数据范围会⾮常⼤,⽽朴素⽅法的时间复杂度过⾼,导致不能在规定时间内得到问题的解。
这时,我们需要⼀种⾼效的数据结构来处理这样的问题,在本⽂中,我们介绍⼀种基于分治思想的数据结构--线段树。
1 线段树1.1 线段树的基本结构线段树是⼀种⼆叉树形结构,属于平衡树的⼀种。
它将线段区间组织成树形的结构,并⽤每个节点来表⽰⼀条线段。
⼀棵[1,10)的线段树的结构如图 1.1所⽰:图1.1 线段树的结构可以看到,线段树的每个节点表⽰了⼀条前闭后开,即[a,b)的线段,这样表⽰的好处在于,有时候处理的区间并不是连续区间,可能是离散的点,如数组等。
这样就可以⽤[a,a+1)的节点来表⽰⼀个数组的元素,做到连续与离散的统⼀。
线段树及其应用常州市教育教研室、常州市第一中学林厚从2009-4-13一、为什么要用线段树例1.有一列数,初始值全部为0。
每次可以进行以下三种操作中的一种:(1)给指定区间的每个数加上一个特定值;(2)将指定区间的所有数置成一个统一的值;(3)询问一个区间上的最小值、最大值、所有数的和。
[问题分析]在最朴素的模拟算法中,通常用线性表存储整个数列,然后在执行这三种操作的过程中,对每个在处理区间或是询问区间中的元素逐一进行处理。
假设这个数列的长度为n,总操作数为m,那么这个算法每次维护的时间复杂度为O(n),整体的时间复杂度为O(mn)。
当m与n比较小的时候,这无疑是一个不错的策略。
但是如果m与n的值比较大,那么这个算法显然就太低效了。
这个算法低效的一个重要原因就是:所有的维护都是针对元素的,而题目中所有的维护都是针对区间的。
所以,我们的优化也就应该从这里着手。
假如我们设计一种数据结构,能够直接维护所需处理的区间,那么就能更加有效地解决这个问题了。
线段树就是这样一种数据结构。
它能够将我们需要处理的区间不相交的分成若干个小区间,每次维护都可以在这样一些分解后的区间上进行,并且查询的时候,我们也能够根据这些被分解了的区间上的信息合并出整个询问区间上的查询结构。
二、线段树的结构定义1:长度为1的线段称为元线段。
定义2:一棵树被称为线段树,当且仅当这棵树满足如下条件:(1)该树是一棵二叉树;(2)树中的每一个结点都对应一条线段[a,b];(3)树中的结点是叶子结点,当且仅当它所代表的线段是元线段;(4)树中非叶子结点都有左右两棵子树,左子树树根对应线段[a ,(a+b)/2],右子树树根对应线段[(a+b)/2,b]。
通俗地说,线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。
每一个叶子结点上a+1=b,这表示了一个初等区间。
对于每一个内部结点b-a>1,设根为[a,b]的线段树为T(a,b),则进一步将此线段树分为左子树T(a,(a+b)/2),以及右子树T((a+b)/2,b),直到分裂为一个初等区间为止。