- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标记啊标记 既要区间修改又要区间求和使用自顶向下的标记下传即可 为了处理区间反转增设一个bool值表示当前节点左右子树已经互换 先把区间从树中splay出再处理 要同时更改所有节点的反转标记?不记录反转标记,记录反转标记的标记(!) * * 好综合的一道题 但是所有部分都是相对简单的! 一点点写,只是很多很多小题而已…… * * 返璞归真 关于线段树,我们讲的已经太多了…… * * 再还一个欠账 K-th number 的另一个方法 如果区间互不包含,将所有要求的区间排个序来算。 用平衡树或线段树存下当前区间中的数 然后向下一个区间移动 左端点增加是数的删除 右端点增加是数的添加 每个数进出各一次而已 * * 如果相互可以包含呢? 关键在于合理的计算方式使得相邻区间的差异尽量小 从一个区间变为另一个区间的代价是多少? 把区间看作二维平面的坐标 代价就是两个平面点的Manhattan距离! 然后呢?Hamilton路? 不!一个已知的区间可以用来算很多个未知的! 平面图Manhattan距离最小生成树。 * * 然后呢? 平面图Manhattan距离MST可以在O(nlogn)求出 先对Q个问题用这个方法处理 再按照MST的顺序和方法实际计算 求数学大牛分析总复杂度 虽然绕了很多弯路,但是有一种用模型解决实际问题的感觉。居然MST还能用来做预处理呢…… * * 最后的硬骨头,众数 听了这么久,一起做一道练习题吧…… 给定一列n个数,和m个区间,求每个区间里的众数出现了多少次。 对于10%的数据n100, m100对于30%的数据n1000,m1000对于50%的数据n100000,m100000对于70%的数据n1000000,m1000000以上数据中区间互不包含。 对于其余30%,n10000,m10000,区间可包含 * * 谢谢大家 * * * 这样也行? 我们现在要维护的就是前缀min的逆运算后的原序列! 可是我们甚至不知道前缀min的逆运算是什么 不要紧,反正用不到。 点查询:查询x处f[x]的值直接返回维护序列的前缀min 区间修改:x左边的所有超过K的值,变为K把维护序列中的f[x]变为K * * 线段树,太灵活了! * * 但是不要迷信线段树 不要迷恋哥,哥只是个传说…… * * 重要条件:区间加法 说了这么多,能使用线段树解决问题的关键: 区间加法,即区间的“性质”由子区间完全决定 包括但不仅限于求和,求最值,求染色状态 这里的“性质”有点像动态规划的状态表示 有时候,求的更多反而更容易 最简单的例子:求区间第二最值 如果实在不满足区间加法,就全完了 * * 不满足区间加法? 我们都知道线段树求区间平均值不难 那求一个区间中位数试试? 什么,还不难? 那你再求个众数? …… * * 不满足区间加法! 越来越难的原因很简单 知道两区间的中位数,就知道和区间的中位数? 知道各自众数有什么用? …… * * 超越中位数K-th number 给定一列数,反复求区间第k大数。 要求的更多反而更容易……更容易…… 线段树的每个区间必须保留更多的信息! 每个区间中存下区间所有数的有序数组 通过归并完成区间加法 * * 归并很慢 如果每做一次查询就归并若干个线段 复杂度就会达到O(n) 离散化!二分答案! 变为求:x是区间第几大数? 这可以分别二分查找若干线段得到。 总复杂度O(nlogn+Q*log2n) * * 区间减法 如果有了区间减法…… 线段树就能如虎添翼 如“区间和”变成“前缀和” 操作能简单不少 同时也是能够使用树状数组的条件 但这不是必需的(和区间加法比一比) * * 另一种核心思想 我说过后面要讲的嘛 * * 堆? 维护一个数据结构支持 整数插入 取最大 整数范围是0~65535好了 * * 刘汝佳老师的大招 堆当然可以 但是刘汝佳老师的黑书上有大招! “分段哈希”…… 分成若干段,存下“段里面有没有数”信息 * * 分段哈希 * * 多来几层如何 如果多来几层呢? 3层?4层?…… 到每个节点下面都只有两个点为止! …… 我们得到了什么…… * * 这也是线段树 * * 哈哈 * * 平衡树 VS 线段树 不要折腾…… * * 一种似曾相识的感觉 维护一个数据结构支持 整数插入 整数删除 取第k大的数(取最大最小什么的就不说了) 查询数的排名 查某数是否存在 允许元素重复(为了难一点) 整数范围是0~65535好了 * * 统计的力量! 平衡树么?线段树! 统计[0,65536)每个数的出现频率,记为f[x] 整数插入,f[x]++ 整数删除,f[x]-- 查询数的排名,求前缀和 取第k大的数(取最大最小什么的就不说了)给定前缀和,查找自顶向下,左边不够就向
您可能关注的文档
最近下载
- 2024党支部工作制度汇编(范本).docx VIP
- 高架桥道路施工组织设计方案.pdf VIP
- HJ84-2016《水质无机阴离子(F-、Cl-、SO42-)的测定离子色谱法测定方法确认-备份.pdf VIP
- 简约PPT模板红色简约风感动中国十大人物介绍.pptx VIP
- 西安工程大学821空气调节考研真题试题2016—2020年.pdf VIP
- “东来顺”与“涮羊肉”.doc VIP
- 微波技术基础-(廖承恩-著)-西安电子科技大学出版社-课后答案.pdf VIP
- 室内装饰用PVC膜标准 T/ZZB 1780-2020.pdf VIP
- 二次函数新定义型综合问题(四大题型)(学生版)-2025年中考数学.pdf VIP
- 云南省市政基础设施工程施工质量验收统一规程DBJ53T-36-2011.pdf VIP
原创力文档


文档评论(0)