2021能看的网站免费的知乎亚马逊官网中国网页版

张小明 2026/1/9 21:59:49
2021能看的网站免费的知乎,亚马逊官网中国网页版,东莞网站建设都找菲凡网络,现在的网站一般做多宽最好并查集理论基础 一、核心思想 高效处理动态连通性问题。 并查集用于判断两个元素是否在同一个集合中。它将每个集合看作一棵树#xff0c;集合的“代表”就是这棵树的根节点。如果两个元素的根节点相同#xff0c;它们就在同一个集合。 二、三大核心操作 初始化 功能集合的“代表”就是这棵树的根节点。如果两个元素的根节点相同它们就在同一个集合。二、三大核心操作初始化功能开始时每个元素都是一个独立的集合其根节点是自己。代码void init(int n) { for (int i 0; i n; i) { father[i] i; // 每个节点的父节点都是自己 } }寻根功能找到指定元素所在集合的根节点。这是并查集的灵魂。优化路径压缩在寻找根的过程中将路径上的所有节点直接指向根节点极大提升后续查询效率。代码int find(int u) { // 如果u的父节点不是自己就递归寻找并把u的父节点直接设置为根 return u father[u] ? u : father[u] find(father[u]); }合并功能将两个元素所在的集合合并成一个。核心原则必须先找到两个元素的根节点再将其中一个根节点连接到另一个上。代码void join(int u, int v) { u find(u); // 找到u的根 v find(v); // 找到v的根 if (u v) return; // 如果根相同说明已在同一集合无需操作 father[v] u; // 将v的根连接到u的根上 }判断功能判断两个元素是否在同一个集合。代码bool isSame(int u, int v) { return find(u) find(v); }三、常见误区join函数的正确写法错误写法void join(int u, int v) { if (isSame(u, v)) return; // 虽然判断对了但... father[v] u; // ...这里连接的是原始节点u和v而不是它们的根 }问题这样会破坏树的结构导致后续find操作出错。例如join(1, 2); join(3, 2);后isSame(1, 3)会返回false不符合预期。正确写法void join(int u, int v) { u find(u); // 必须先找根 v find(v); // 必须先找根 if (u v) return; father[v] u; // 连接的是根节点 }原因保证了总是将两个集合的根进行连接维护了数据结构的正确性。四、另一个优化按秩合并思想在合并时总是将“秩”可以理解为树的高度或大小较小的树挂载到较大的树上避免树的高度过快增长。虽然理论上很好但路径压缩的优化效果已经非常出色且代码更简洁。在实际应用和面试中通常只使用路径压缩就足够了。五、完整代码模板int n 1005; // n根据题目中节点数量而定一般比节点数量大一点就好 vectorint father vectorint (n, 0); // 并查集初始化 void init() { for (int i 0; i n; i) { father[i] i; } } // 并查集里寻根的过程 int find(int u) { return u father[u] ? u : father[u] find(father[u]); // 路径压缩 } // 判断 u 和 v是否找到同一个根 bool isSame(int u, int v) { u find(u); v find(v); return u v; } // 将v-u 这条边加入并查集 void join(int u, int v) { u find(u); // 寻找u的根 v find(v); // 寻找v的根 if (u v) return ; // 如果发现根相同则说明在一个集合不用两个节点相连直接返回 father[v] u; }六、复杂度分析空间复杂度O(n)需要一个father数组。时间复杂度接近 O(1)。路径压缩后的并查集时间复杂度在O(logn)与O(1)之间且随着查询或者合并操作的增加时间复杂度会越来越趋于O(1)。路径压缩保证了每次操作后树的结构都趋向于扁平化使得后续的查询和合并操作非常快。KamaCoder107.寻找存在的路线107. 寻找存在的路线1.思路本题是并查集的模板题掌握基础模板就能直接拿下。#include iostream #include vector using namespace std; int n,m; vectorintfather(105,1); void init(){ for(int i1;in;i){ father[i]i; } } int find(int u){ if(ufather[u]) return u; return father[u]find(father[u]); } bool issame(int u,int v){ ufind(u); vfind(v); return uv; } void join(int u,int v){ ufind(u); vfind(v); if(uv) return; father[u]v; } int main(){ cinnm; init(); for(int i0;im;i){ int s,t;cinst; join(s,t); } int source,destination; cinsourcedestination; coutissame(source,destination); return 0; }2.Reference107. 寻找存在的路径 | 代码随想录
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

即时通讯型网站开发网络营销搜索引擎

三相lcl型并网逆变器控制策略 电容电流反馈和电网电压全前馈,加入5.7.11.13次谐波thd<5最近在搞三相LCL型并网逆变器的控制策略,发现电容电流反馈和电网电压全前馈的组合拳确实有点东西。这两个策略叠加使用,对付谐波干扰就像给系…

张小明 2025/12/30 20:16:06 网站建设

下载的网站模板怎么进入后台杭州开发区建设局网站

你是否曾面对过这样的困境?接手一个庞大的Java项目,看着层层嵌套的方法调用,就像站在迷宫的入口,完全不知道从何下手。那些复杂的代码逻辑、隐藏的依赖关系,让你不得不花费数小时甚至数天时间才能理清头绪。 【免费下载…

张小明 2025/12/31 12:11:12 网站建设

做家政服务网站做网站备案是个人还是企业好

3款高效取字模工具:嵌入式开发的终极选择 【免费下载链接】三种取字模软件介绍 本开源项目提供三种高效实用的取字模软件:Img2Lcd、PCtoLCD2002和字模提取V2.2。这些工具专为液晶显示屏开发设计,能够将图像或字符转换为适合LCD显示的格式。Im…

张小明 2026/1/6 12:01:50 网站建设

福州网页模板建站有哪些网站可以做网站游戏

你是否曾经因为系统缺陷而丢失重要数据?是否担心传统操作系统的安全风险?今天,我们将深入探索Redox OS这个完全用Rust语言构建的操作系统,看看它如何从根本上解决这些安全问题。 【免费下载链接】redox Mirror of https://gitlab.…

张小明 2026/1/1 3:29:45 网站建设

石家庄便宜网站制作免费注册自助网站

Layui-Admin后台管理系统:5步快速构建企业级管理平台 【免费下载链接】layui-admin 基于layui和thinkphp6.0的快速后台开发框架。快速构建完善的管理后台,内置表单、表格的php生成,以及完善的RBAC权限管理。 项目地址: https://gitcode.com…

张小明 2025/12/31 5:26:53 网站建设

开源网站内容管理系统pc软件开发工具

PaddlePaddle镜像如何优化大规模embedding训练? 在现代AI系统中,从搜索引擎的语义理解到推荐系统的用户建模,embedding技术几乎无处不在。尤其当词表规模突破千万量级——比如处理中文互联网海量词汇或电商平台数十亿用户行为时,传…

张小明 2025/12/31 10:46:30 网站建设