首页 > 其他分享 >[学习笔记] 启发式合并 & DSU on Tree

[学习笔记] 启发式合并 & DSU on Tree

时间:2023-07-09 09:33:21浏览次数:33  
标签:Tree 复杂度 DSU 合并 集合 启发式

一、启发式合并

启发式合并多用于合并两个集合,现在有这样一个问题:

现在给定 \(n\) 个集合,第 \(i\) 个集合初始只有 \(\{i\}\),要支持集合的合并操作。

如果我们暴力合并,时间复杂度会是 \(O(n^2)\) 的。

参考并查集的按秩合并,考虑将小的集合合并到大的集合上。

考虑计算时间复杂度,容易发现 \(x+y \geq 2\min(x,y)\),所以集合大小可以是以更小的集合的大小的 \(2\) 倍增长的,所以每个元素至多被操作 \(\log n\) 次,总时间复杂度 \(O(n \log n)\)。

二、DSU on Tree

标签:Tree,复杂度,DSU,合并,集合,启发式
From: https://www.cnblogs.com/RB16B/p/17538331.html

相关文章

  • 使用zTree如何实现悬停事件
    zTree是功能强大的树插件,但本身没有提供鼠标悬停事件,不过我们可以通过jquery实现,同时我们可以自定义一个延迟操作,避免不小心滑过的情况下触发不必要的操作vartimer;//声明一个全局量用于存储延迟操作的定时器$("#tree").on("mouseover",".node_name",function(){var......
  • 【构造,树】【Loj】Loj6669 Nauuo and Binary Tree
    2023.7.3ProblemLink交互库有一棵\(n\)个点的二叉树,你每次可以询问两个点之间的距离,猜出这棵二叉树。\(n\le3000\),询问次数上限\(30000\)。首先给你距离一定是先把每个点的深度问出来,确定一个大致的考虑顺序。然后我们开始仔细思考“距离”这个条件怎么用。发现询问两个......
  • 【线段树】 HDOJ 5274 Dylans loves tree
    用dfs序构建线段树,然后用lca求出两点间路径的xor和。。。#include<iostream>#include<queue>#include<stack>#include<map>#include<set>#include<bitset>#include<cstdio>#include<algorithm>#include<cstring>#include......
  • 【并查集】 HDOJ 4786 Fibonacci Tree
    就是求出搞成最小生成树的最少白边和最多白边的数量。。。。#include<iostream>#include<queue>#include<stack>#include<map>#include<set>#include<bitset>#include<cstdio>#include<algorithm>#include<cstring>#include<......
  • vue-treeselect 被 overflow 遮挡
    场景在一个内容区域设置了overflow纵向滚动的对话框中,内部的vue-treeselect组件下拉框选项被遮挡了。解决办法给vue-treeselect设置appendToBody和z-index属性。注意事项设置了appendToBody后,下拉框选项的字号会变大。为了与原来的字号相匹配,需要修改样式。找......
  • 时序数据库深入浅出之存储篇——本质LSMtree,同时 metric(比如温度)+tags 分片
    什么是时序数据库先来介绍什么是时序数据。时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。时序数据库就是存放时序数据的数据库,并且需要支持时序......
  • el-tree树点击全选按钮,全部展开并且全选
    先看图:代码如下://全部选中qxClick(){this.isQx=!this.isQx;//判断按钮的状态this.expandAll();if(this.isQx){console.log(this.isQx,"-------------------------------",this.datas);//设置this.$r......
  • Git神器| SourceTree安装使用教程
    SourceTree是Windows和MacOSX下免费的Git客户端管理工具。支持创建、克隆、提交、push、pull和合并等操作。一、sourcetree的安装1.下载sourcetree下载链接:Sourcetree|FreeGitGUIfor MacandWindows2.安装sourcetree点击安装,第一个创建Bitbucket账户可跳过初......
  • tree-test
    #include<iostream>#include<stack>usingnamespacestd;typedefstructBiTNode{ chardata; structBiTNode*lchild; structBiTNode*rchild;}BiTNode,*BiTree;voidCreateTree(BiTree*Tree){ charch; ch=getchar(); if(ch=='.')......
  • [atAGC062E]Overlap Binary Tree
    记\(m=\frac{n+1}{2}\),即二叉树的叶子个数对于合法序列,按以下方式生成其对应的二叉树:(此处二叉树指无标号、以一个点为根且每个非叶节点恰有两个儿子的树)恰存在一个区间与其余区间均有交,将其作为根并(在序列中)删除恰存在一个\(i\in[1,n)\)使得\(\max_{1\lej\lei}R_{j}<L_{i+......