首页 > 编程语言 >boruvka 算法学习笔记

boruvka 算法学习笔记

时间:2024-02-12 21:11:22浏览次数:28  
标签:log 复杂度 笔记 选择 算法 boruvka 边权

boruvka算法

就是最小生成树 B 算法。B 算法的思路是每次对每个连通块,求出它能连出去的权值最小的边,然后再按边权从小到大合并。由于每次操作连通块数至少减半,所以复杂度是 \(O(m\log n)\)。

1.CF1305G Kuroni and Antihype

题意:长为 \(n\) 的数列 \(a\),现在要选择全部数,每一次你可以选择一个未被选择的数,也可以选择一个已经被选择了的数 \(a_i\),再选择一个满足 \(a_i\&a_j=0\) 的未被选择的数 \(a_j\),得到 \(a_i\) 的贡献,求选择所有数的贡献最大值。

思路:我们先加入点 \(n+1\) 权值为 0 来保证能选所有点,令 \(ans=-\sum a_i\),然后将 \(a_i\&a_j=0\) 的点间连上 \(a_i+a_j\) 的边,然后求一个最大生成树即可。但是边数是 \(O(n^2)\) 量级的,我们考虑利用这道题的性质进行优化。我们设 \(f[S][2]\) 表示边权是 \(S\) 的二进制下子集的最大/次大边权,这个可以用 DP 求出,然后对于 \(a_i\),根据 \(f[\complement a_i]\) 求出 \(i\) 所在集合能连出去的最大边权再加边即可。因此可以 \(O(w\log w)\) 拓展一轮,那么用上 B 算法就可以了。

复杂度 \(O(w\log n\log w)\)。

2.Tree MST

题意:有一棵树,现在用这棵树生成一张完全图,图上两点间的距离是 \(w_x+dis(x,y)+w_y\),求最小生成树。

思路:考虑用 boruvka 算法。我们每次需要对于一个点,求出这个点连向不在一个联通块的点的最小边,可以用一次换根 DP 求出。

具体的,维护 \(w_x+dis_x\) 的最小值和不在一个联通块内的点的次小值就可以了。

复杂度 \(O(n\log n)\)。

标签:log,复杂度,笔记,选择,算法,boruvka,边权
From: https://www.cnblogs.com/Xttttr/p/18014130

相关文章

  • 微分积分及其运算法则成对列举
         ......
  • C++——异常处理模块笔记
    异常处理是C++中的重要概念之一,用于处理在程序执行过程中可能发生的错误或异常情况。异常是指在程序执行过程中发生的一些不寻常的事件,例如除零错误、访问无效内存等。C++提供了一套异常处理机制,使得程序可以优雅地处理这些异常,提高程序的可靠性和健壮性。异常是一种程序......
  • 【算法】排序
    冒泡排序思想:每一轮确定一个最大值移到最右边。点击查看代码for(inti=n;i>=1;i--){ for(intj=1;j<i;j++){ if(a[j]>a[j+1])swap(a[j],a[j+1]); } }选择排序思想:与冒泡相似。点击查看代码for(inti=n;i>=1;i--){ intmax_id......
  • 2024牛客寒假算法基础集训营2个人补题题解(K、D)
    比赛链接:2024牛客寒假算法基础集训营2K、TokitsukazeandPassword(easy)题面看着很难实际上只要暴力的东西,赛时看了眼题面就溜了血亏爆搜,枚举\(abcd\)和_可能的值,枚举的情况只有\(9*8*7*6*9=27216\)种。判断按照枚举出的对应值排列出的密码是否满足条件,满足就\(ans++\)写完......
  • 江禾:零散媒体笔记
    零基础绘画练习排线,整齐几何体进阶把想画的东西画像,不断观察修改提高自己审美,分析好看的画为什么好看眼睛和画面要平行明确线条才能进步混剪素材预告片欧美预告片YouTube、Bilibili搜电影搜电影的替代网站纪录片《电影史话》《出神入化:电影剪辑的魔力》《工......
  • [数据结构] 串与KMP算法详解
    写在前面今天是农历大年初三,祝大家新年快乐!尽管新旧交替只是一个瞬间,在大家互祝新年快乐的瞬间,在时钟倒计时数到零的瞬间,在烟花在黑色幕布绽放的瞬间,在心底默默许下愿望的瞬间……跨入新的一年,并不意味了一切都会朝着更美好,也没有什么会从天而降,我们赋予了它这份意义,让它自然裹......
  • 二十八、实践中前端的一些笔记
    display:flex/inline-flex使用了display:flex/inline-flex属性后,子元素横向排列使用了display:flex属性后,父元素不设置宽度,宽度就是100%;不会被子元素宽度撑开;使用了display:inline-flex属性后,父元素不设置宽度,宽度就是所有的子元素宽度之和,会被子元素宽度撑开,实现宽度自......
  • 2-SAT学习笔记
    2-SATk-SAT问题SAT是适定性(Satisfiability)问题的简称。一般形式为k−适定性问题,简称k−SAT。而当k>2时该问题为NP完全的。所以我们只研究k=2的情况。2−SAT,简单的说就是给出n个集合,每个集合有两个元素,已知若干个<a,b>,表示a与b矛盾(其中a与b属于不同的集合)。然后从每个集合选择......
  • 有关素数的算法
    一、素性判断素数,又叫质数,是指一个整数,除了1和本身之外,还有其它的因数(注意:1不是素数)。因此,对于一个整数\(n\),我们只要检测\([2,n-1]\)能否整除\(n\)。整除的定义:\(\exist\)\(a,b,k\in\mathbb{Z}\),使得\(a=kb\),则称\(b\)整除\(a\),记\(b\)\(|\)\(a\)。若\(......
  • 我在代码随想录|写代码| 贪心算法 | 理论基础, 455.分发饼干, 376. 摆动序列,53. 最大
    学习目标:博主介绍:27dCnc专题:数据结构帮助小白快速入门......