




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浅谈分块思想在一类数据处理问题中的应用 北京市第八十中学罗剑桥 本文讨论的范围 一类与线性序列和树形结构有关的数据处理问题特征 1 在竞赛中常常出现2 没有专门的数据结构解法或者数据结构解法十分复杂 什么是分块思想 将一个问题分解为若干个规模较小的子问题优势 1 如果子问题的规模很小 可以设计关于子问题规模的复杂度较高的算法 2 如果子问题的数目很少 可以对每类子问题使用复杂度与整个问题规模有关的算法 3 如果每个子问题内部的元素具有共同的性质 可以使用针对性的算法 线性序列的分块化 从第一个元素开始 每连续的S个元素组成一个块 若剩余的元素不足S个 令它们组成一个块 例子 序列元素数目N 7 块的大小S 3 线性序列的分块化 性质 设N为序列的元素数目 S为块的大小 1 块的数目不超过N S 1 2 对于任意区间 L R 可以分解成若干个完整的块以及剩余的不超过2S个元素 如果能在块的层次上概括块内元素的信息 并且可以快速将不同部分的信息合并 就能够快速地得到任意区间的信息了 例一 一个N个数的序列 你要执行M次操作 操作有两种类型 1 从第一个数开始 每隔Di个位置的数加上Xi 2 查询区间 Li Ri 的所有元素的和 1 N M 105 任意时刻所有数均为绝对值不超过109的整数 例一 样例 N 5 M 4 7151182ADD Di 2 Xi 18151283ASK Li 1 Ri 4answer 8 15 12 8 43ADD Di 4 Xi 53151283ASK Li 1 Ri 4answer 3 15 12 8 38 例一 分析 将序列分块 令每块的大小为 考虑在块的层次上维护每个块的所有元素的和 首先 预处理的复杂度为O N 1 对于询问操作 只需计算出询问区间对应的完整的块与多余的元素的和 时间复杂度为O N 10 Ask Li 3 Ri 8 3 4 5 1 2 3 7 8 9 10 answer 5 6 7 8 26 2 对于修改操作 复杂度还是很高 怎么办呢 例一 分析 这时还是要用到分块的思想 发现 只有当Di比较小的时候修改的元素才会很多 解决方法 1 每个元素和块只考虑Di 的修改操作的影响 2 用数组记录Di 的每个Di的修改量的和 在查询时枚举每个小于的Di O 1 计算对答案的影响即可 此算法总的时间复杂度为O n m 例一 分析 N 10 3 4 5 1 2 3 7 8 9 10 1 ADDDi 1 Xi 3Sum 12 6 24 10 Di 1 3 3 0 0 2 ADDDi 4 Xi 1 4 4 5 1 3 3 7 8 10 10 Sum 13 7 25 10 Di 1 3 3 0 0 树形结构的分块化 树的DFS序 从根开始深度优先遍历 每次遇到一个点进栈或出栈 就把它放到DFS序列的末尾 11 21 2 41 2 4 41 2 4 4 51 2 4 4 5 51 2 4 4 5 5 21 2 4 4 5 5 2 31 2 4 4 5 5 2 3 31 2 4 4 5 5 2 3 3 1 DFS序的性质 1 相邻两个元素之间仅有三种关系 同一个点 父子关系 兄弟关系 2 任意两项之间的连续子序列恰好对应了树上一条路径 路径上除LCA以外的点至少出现1次 3 DFS序列中任意一个区间以及这个区间所有元素的LCA恰好对应树上的一个连通块 将DFS序列分块 每一块与其LCA就对应了树上的一个连通块 例二 一个N个点的树 边有权值 你需要计算对于每个点 其他所有点到它的距离中第K小的值 1 K N 50 000 边的权值为绝对值不超过1 000的整数 例二 样例 1 2 3 4 5 10 3 7 5 N 5 K 2 distance 1 3 8 10 10distance 2 3 5 7 13distance 3 10 13 18 20distance 4 5 8 12 18distance 5 7 10 12 20 例二 分析 相邻的点之间的答案具有很强的相关性 设点u的答案为ans u 若存在一条边 u v 的权值等于c 则点v的答案是ans u c到ans u c之间的数 考虑将树分成若干个规模等于S的连通块 一次计算出一个连通块内所有点的答案 例二 分析 对一个连通块 以块内的某个点为根 性质1 无论以块内的哪个点为根 每个点到根的路径上的第一个块内的点是不变的 推论 将所有点按最近块内祖先分类 考虑同类的点u v 设p为u和v的最近块内祖先 则点u到根的距离点u到p的距离 点v到p的距离 例二 分析 例二 分析 1 对于一个连通块 首先以一个点r遍历全树 计算出每类点到最近块内祖先 LIA 的距离 并且将每类点按到LIA的距离排序 2 然后 依次计算块内每个点的答案 使用二分答案的办法 3 如何统计到点ri距离不超过x的点的数目 以ri为根遍历块内的所有点 算出它们到ri的距离 对每类点二分查找加上LIA到ri的距离以后不超过x的最大的数的位置即可 例二 复杂度分析 连通块的大小为S 第一次遍历和排序的时间复杂度为O NlogN 每个点 二分答案和查找的时间复杂度为O log2N 所以处理一个块的复杂度是O NlogN Slog2N 总的时间复杂度为O N2logN S NSlog2N 如果设S 总的时间复杂度为O N1 5log1 5N 分块与预处理 预处理的条件线性序列上 预处理任意两块之间的信息 每次询问时经过若干次增量得到询问区间的信息 树形结构中 贪心算法标记若干关键点 预处理任意两个关键点之间的信息 每次询问时经过若干次增量得到询问路径的信息 分块与离线算法 与分块与预处理的方法有一定的相似之处 核心 没有必要记录过多信息 在预处理的同时计算询问的答案 具体可参考论文 感谢 感谢中国计算机学会 感谢我的指导老师贾志勇老师长期以来的关心和帮助 感谢集训队的胡伟栋教练和唐文斌教练 特别感谢北京人大附中的范浩强同学的大力帮助和启发 感谢学长黄纪元同学的帮助 感谢我的父母对我的无微不至的关心和照顾 Thankyou Questionsarewelcome 参考文献 ThomasH Cormen CharlesE Leiserson RonaldL Rivest CliffordStein IntroductiontoAlgorithms 2nded 潘金贵等译 机械工业出版社 JonKleinberg EvaTardos AlgorithmDesign 清华大学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 运动员饮食调理方案分析
- 太阳能发电隐患排查分析报告
- 生活垃圾生物质能发电前景分析报告
- 青岛六上数学试卷
- 钱桥中学期末数学试卷
- 鲁迅外国语学校数学试卷
- 2025年大气污染防治设备项目合作计划书
- 梁化一中初二数学试卷
- 锌锰电池停车场系统维护成本分析报告
- 2025年甘肃省陇南市成县招聘城镇公益性岗位人员31人笔试参考题库附答案解析
- 简思plc状态帧使用说明书
- THSPP 0010-2023 欧标茶生产茶园栽培技术规程
- 附件2:“揭榜挂帅”制项目申报材料参照模板
- GB/T 7113.5-2011绝缘软管第5部分:硅橡胶玻璃纤维软管
- GB/T 4668-1995机织物密度的测定
- GB/T 29256.5-2012纺织品机织物结构分析方法第5部分:织物中拆下纱线线密度的测定
- GB/T 27750-2011绝缘液体的分类
- GB/T 1410-2006固体绝缘材料体积电阻率和表面电阻率试验方法
- 科幻小说《三体》内容简介读书分享会ppt图文课件
- 工会法律知识考试参考题库350题(含答案)
- 产品说明中文asd-7110管状体电机说明书
评论
0/150
提交评论