- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有关树的算法.ppt
树分治 超纲了 稍微提一下 常见方法 点分治 边分治 块分治(树块剖分) 链分治(树链剖分) Next 点分治 选择一个点将无根树转为有根树 递归处理去掉根之后的每一棵子树 例题 给定一棵树,点上带权 求出所有长度=k的路径 Next 点分治 Con’d 选一个根之后,路径可以分为经过根和不经过根的两种 经过根的情况 计算出当前子树中所有点到根的距离,用排序+扫描的方法求出和=k的点对数. 注意到来自同一子树的点对是不合法的,所以需要减去同一子树里的答案 不经过根的情况 在子树中递归计算 防止退化,根选取为当前子树的重心 O(Nlog^2N) 树形Dp? Next 边分治 在树中选取一条边 将原有的树分成两棵不相交的树,递归处理。 刚才的题? Next 树块剖分 Next SPOJ QTREE 一棵边上带权的树,两种操作 CHANGE I ti 第i条边的权改为ti QUERY a b 求出a到b的路径上权最大的边 Next SPOJ QTREE Next SPOJ QTREE Query(a,b) While (root[a] != root[b]) // root[a]表示a所在树块的根 If (dep[root[a]] dep[root[b]) Res = max(res, data[a]) // data[a]表示a到块根的最大权值 A = pre[root[a]] Else Res = max(res, data[b]) B = pre[root[b]] While (a != b) If (dep[a] dep[b]) Res = max(res, weight[a]) //weight[a]表示a到pre[a]的边权 A = pre[a] Else Res = max(res, weight[b]) B = pre[b] Return res Next Thanks for listening. Questions are welcome. * * * * * * * * * * * * * * * * * * * * * * 树 胜利一中 王子昱 概要 定义 性质 树的遍历 Dfs序, Bfs序 欧拉序 LCA问题 树形DP *树分治 题目选讲 定义 性质 定义(之一):联通、无环的无向简单图 每个顶点都是割点,每条边都是割边 NOI07 追捕盗贼 在树上添加一条边会得到一个环 在生成树相关的问题中很有用的性质 树是二分图 关键字 N个顶点,n-1条边的联通图 任意两点间有且只有一条路径 每个点向东至多连一条边([NOI2008]道路设计) Et cetera 树的遍历 深度优先遍历 和图的dfs一致 先序遍历,中序遍历,后序遍历…… DFS序 DFS序 深度优先遍历得到的序列: Dfs(x) list.push_back(x) For every child ch of x: Dfs(ch) List.push_back(x) 记录第一次访问和最后一次访问 abeeffbcgghhiicdjjda ((()())(()()())(())) DFS序 :: 性质 一棵子树对应一段连续的序列 abeeffbcgghhiicdjjda 或者是abefcghidja 例题 给定一棵节点带权的树 两种操作 A I delta:以I为根的子树内节点权值+delta Q I: 求以I为根的子树的权值和 树状数组|线段树维护dfs序 abeeffbcgghhiicdjjda ((()())(()()())(())) DFS序 :: 性质 改动一下刚才的代码: Dfs(x) list.push_back(+x) For every child ch of x: Dfs(ch) List.push_back(-x) 考虑这个序列从+a到+g的和 +a +b +e –e +f –f –b +c +g 正负抵消后就是从a到g的路径! abeeffbcgghhiicdjjda ((()())(()()())(())) 例题 一棵节点带权的树,两种操作 A I delta: 点i的权增加delta Q I j: 输出从i到j的路径上点的权值和 直接套用刚才的方法? abeeffbcgghhiicdjjda ((()())(()()())(())) 例题 反例:从e到c +e –e –b +c e-c ? a-e + a-c – weight[a] (+a +b +e) + (+a +b +e –e +f –f –b +c) – a Q(u, v) = Q(w, u) + Q(w, v) – weight[w],W = LCA(u,v) 什么是LCA?一会再
您可能关注的文档
最近下载
- 肿瘤电场治疗仪注册技术审评报告049.pdf VIP
- 无涯教程网-ASP.Net-Core教程完整离线版.pdf VIP
- 第7课《实践出真知》第2框《坚持实践第一的观点》同步课堂精品课件-【中职专用】《哲学与人生》.pptx VIP
- 组织行为学课件(40学时).pdf VIP
- 新版医用电气安全GB9706.1-2020标准解读.pptx VIP
- 班级学期工作总结PPT.pptx VIP
- 党的二十届三中全会精神解读与高质量发展答案.docx VIP
- 设计一带式输送机传动装置.doc VIP
- 2025年度医院口腔科工作总结及2026年工作计划.docx VIP
- 医院口腔科年度工作总结.docx VIP
原创力文档


文档评论(0)