Boruvka 学习笔记

news/2024/10/24 8:04:43/文章来源:https://www.cnblogs.com/As-Snow/p/18495862

Boruvka 算法是一种求解最小生成树的算法。每轮对于每个连通块,找出一条连接其他连通块的最短边,并将这些边加入最小生成树中。由于每轮连通块数量减半,所以是 \(O((n+m)\log n)\) 的。

连通块使用并查集维护。其实并查集是 \(O(\log n)\) 还是 \(O(\alpha(n))\) 的没有影响,因为一共只会合并 \(n-1\) 次。

该算法常用于求解稠密图的最小生成树。

例题

P9701

定义特殊边为 \(P\) 中的边,平凡边为其他。特殊点为连接特殊边的点,平凡点为其他。

发现 \(n\) 非常大,而与特殊点只有 \(O(m)\) 个,考虑将一段平凡点缩成一个,这样一段里相邻的两个连接一条长度为 \(1\) 的平凡边最优。缩完后就只有不超过 \(4m+1\) 个点。

Boruvka 算法中需要枚举最小出边。枚举特殊边是 \(m\) 的,而枚举平凡边则不可接受。事实上我们不用枚举每一条平凡边,由于只求最小的那一条,所以对于点 \(x\) 往前后暴力跳就好了。

现在证明暴力跳的时间复杂度是对的。跳到 \(y\) 且不满足是平凡出边时会有两种情况。

  1. \((x,y)\) 是一条特殊边。由于特殊边只有 \(m\) 条,所以每轮 1 情况的总和是 \(O(m)\) 的。
  2. \(y\)\(x\) 属于同一连通块。这时需要维护一个 prev/next 数组来跳过一整段同一连通块的,使得 1,2 两种情况是交替出现的,所以每轮 2 情况的总和也是 \(O(m)\) 的。

CF1550F

考虑将 \(x,y\) 两点之间连一条边权 \(w=||a_x-a_y|-d|\) 的边,表示两点可以一次到达当且仅当 跳跃距离范围设置 不小于 \(w\)

于是能否从 \(s\) 到达 \(i\) 就是判定 \(s\)\(i\) 两点是否有一条路径满足所有边的边权不大于 \(k\)。有一个经典的 trick 是两点之间最小的路径上的边权最大值等于两点在 MST 上的路径边权最大值。

使用 Boruvka 求解 MST。考虑怎么找到最小的 w 的 \(y\)。分类讨论一下得:

\[w=\begin{cases} |a_x-a_y-d|,x>y\\ |a_y-a_x-d|=|a_x+d-a_y|,x<y \end{cases} \]

分别找离 \(a_x-d\)\(a_x+d\) 最近的就好了。


CF888G

看到异或想到 0-1 trie,发现在 trie 上 LCA 深度越大异或越小。考虑从根递归下去,对于有两个儿子的点,将两个儿子子树合并为一个连通块后,在 trie 上找到最小边合并即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/820996.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看织梦CMS网站源码中的数据库信息

1. 定位配置文件文件路径:织梦CMS V5.1:include/config_base.php 织梦CMS V5.3 及以上版本:data/common.inc.php2. 编辑配置文件使用文本编辑器打开 data/common.inc.php 文件,找到数据库连接配置部分。配置文件的内容通常如下所示:<?php // 数据库连接信息 $cfg_dbho…

PbootCMS错误提示:文件上传失败

错误提示:文件上传失败解决方案:检查上传文件夹(通常位于 /upload/)的写权限,确保Web服务器有写入权限。 检查PHP配置文件(php.ini)中的 upload_max_filesize 和 post_max_size 是否足够大。 检查文件类型和大小限制是否符合要求。扫码添加技术【解决问题】专注中小企业…

如何修改网站后台的地址?公司网站被修改怎么改?

如果公司的网站被未经授权的人员修改,你需要迅速采取措施来恢复网站并加强安全性。以下是一些步骤: 1. 确认问题检查网站:确认哪些部分被修改,记录下具体的改动。 通知相关人员:立即通知IT部门或负责网站维护的团队。2. 恢复网站备份恢复:如果有定期备份,从最近的备份中…

日志篇:模组日志总体介绍

​ 今天我们学习合宙模组日志总体介绍,以下进入正文。 一、本文讨论的边界 本文是对合宙 4G 模组, 以及 4G+GNSS 模组的日志功能的总体介绍。通过日志,可以对研发过程中,以及模组运行过程中的各种故障进行分析。 二、4G模组日志的几种类型界 4G 模组的日志有两种类型: 业务…

一篇讲透:模组典型上网业务的AT上网流程

​ 今天我们学习合宙模组典型上网业务的AT上网流程。 文末阅读原文,下载最新教程/固件。 一、简介 本文介绍了合宙4G模组的常用的AT指令和服务器交互的流程。 进一步详细的流程,参见各个模组的AT命令资料。 如果没有顺手的串口工具,推荐 [LLCOM | 能跑Lua代码的串口调试工具…

WPF 使用快捷键方式制作简易的 Word 上的 Latex 输入法

本文将告诉大家如何在 WPF 里面编写一个简易输入法软件,让这个输入法软件支持插入 Latex 格式的公式到 Word 内。核心原理是使用 Word 的快捷键插入公式编辑器,再通过剪贴板输入 Latex 格式的公式内容,再输入回车作为 Word 公式软件的界面效果如下:运行效果如下:本文以下为…

读数据工程之道:设计和构建健壮的数据系统18数据存储系统(上)

数据存储系统(上)1. 单机存储和分布式存储 1.1. 存储系统是存在于原材料之上的抽象层次 1.2. 磁盘是一种原始存储材料,而主要的云对象存储平台和HDFS是利用磁盘的存储系统 1.3. 随着数据存储和访问模式变得越来越复杂,并超出了单一服务器能做到的支持,将数据分布到一个以上…

2024.10.24 鲜花

多次查询给定集合是否存在任一给定子集多次查询给定集合是否存在任一给定子集Re:End of a Dream先考虑经典例题 DZY Loves Chinese II 考虑其做法:随机赋值非树边,用返祖边来平衡使其权值为 \(0\),线性基维护。 考虑扩展,发现集合中并不存在一个唯一元素用来平衡,考虑在每…

指令

带v-的特殊属性即为指令,常见的指令有v-if,v-show,v-html,v-text,v-slot,v-bind,v-on,v-model等等,也可自定义指令。一个指令的任务是在其表达式的值变化时响应式地更新 DOM。除了name为必须外,其他的都可以没有,也可以有,修饰符可以有多个; v-focus v-aa.bb v-aa:aa.b…

温故知新,基于播客形式学习英语之EnglishPod 365, Elementary初级C集合(音频、原文、讲解)

简介 Enishpod是一家公司叫做Praxis Language推出的收费讲座,相比较ESLPod, EnishPod为常速。Enishpod极具趣味性,两位主持人Marco和Amira的讲解很生动幽默,完全有别于新概念类型听力的乏味。同时,Enishpod分了不同的难度级别,基础较差可以先选择B级和C级。 Elementary - …

网课视频课程下载神器,学无止下载器,快过期的课程有救了!

有多少小伙伴像我一样,准备在假期好好学点兴趣以内的东西,结果发现花费好几百块买的课居然过期了打开之后课程已经过期,无法观看了(网易云课堂购买的课程过期后无法观看了。。。)又想学习,又不想再浪费钱,该怎么办呢?一顿操作猛如虎,费了半天功夫装了X猴,装了各种插件…

手把手教你如何下载智慧职教(职教云)视频课程课件资料

前言:很多同学都想知道智慧职教(职教云)中课程视频资料怎么下载,但是智慧职教中某个课程的目录中展示的视频和资料是不提供直接下载方式的,所以下面就教大家如何用学无止下载器下载目录中展示的视频资料,包括MP4,PPT和PDF。 一、电脑登录智慧职教网页版 网页版智智慧职教…