随笔分类 -  生成树

摘要:解题思路 这道题目是一个典型的最小生成树(Minimum Spanning Tree, MST)问题,需要满足以下要求: 选择的边能够连通所有节点(形成生成树) 选择的边尽可能少(对于生成树来说,边数固定为n-1) 选择的边中最大权值尽可能小 方法思路 Kruskal算法:使用贪心策略,按边的权值从 阅读全文
posted @ 2025-05-27 20:23 CRt0729 阅读(43) 评论(0) 推荐(0)
摘要:解题思路 这道题目是一个典型的最小生成树问题,但有两个特殊要求: 必须选择至少k条一级公路 需要使所有公路中花费最大的那条的花费尽可能小 方法思路 双阶段Kruskal算法:我们分两个阶段来构建生成树 第一阶段:只考虑一级公路,构建部分生成树,确保至少有k条一级公路 第二阶段:考虑所有公路(优先选择 阅读全文
posted @ 2025-05-27 20:14 CRt0729 阅读(47) 评论(0) 推荐(0)
摘要:解题思路与代码注释 题目理解 这道题目要求我们在给定的N个点之间建立灌溉系统,使得所有点都能连通。建造成本为两点间欧几里得距离的平方,且只有当成本≥C时才能建造管道。我们需要找到使所有点连通的最小总成本,如果无法满足条件则输出-1。 解题方法 使用Prim算法来求解最小生成树,并在过程中: 仅考虑距 阅读全文
posted @ 2025-05-21 16:37 CRt0729 阅读(31) 评论(0) 推荐(0)
摘要:解题思路与代码注释 题目理解 这道题目要求我们找到一个连通图的最小生成树中的最长边的长度。题目保证所有农场之间都是连通的,所以最小生成树一定存在。 解题方法 使用Prim算法来求解最小生成树,并在过程中记录下最长的边。Prim算法是一种贪心算法,从一个顶点开始,每次选择连接当前生成树和剩余顶点的最小 阅读全文
posted @ 2025-05-21 16:12 CRt0729 阅读(42) 评论(0) 推荐(0)
摘要:#include<bits/stdc++.h> using namespace std; const int N = 1e5+10,inf = 0x3f3f3f3f; struct node{ int x,y,z; }; node a[N]; int f[N]; int n,m; bool cmp( 阅读全文
posted @ 2025-05-21 14:48 CRt0729 阅读(21) 评论(0) 推荐(0)
摘要:解题思路 本题需要解决的是在带权无向图中,找到两点间路径的最小边权的最大值(即最大瓶颈路)。核心步骤包括: 构建最大生成树:使用Kruskal算法,确保路径上的最小边权尽可能大 预处理LCA和路径最小值:使用倍增法预处理每个节点的祖先信息和路径最小边权 查询处理:对于每个查询,通过LCA找到路径并确 阅读全文
posted @ 2025-04-29 19:52 CRt0729 阅读(61) 评论(0) 推荐(0)
摘要:解题思路 问题分析 题目描述:有n个城市,需要修建公路将它们全部连通。修建规则特殊: 每轮每个城市选择最近的城市申请修路 有特殊规则处理冲突和环路情况 最终目标是计算所有修建公路的总长度 关键发现:虽然题目描述复杂,但实际可以简化为标准的最小生成树问题。因为: 题目描述的修建过程实际上会构建一棵生成 阅读全文
posted @ 2025-04-28 22:20 CRt0729 阅读(66) 评论(0) 推荐(0)
摘要:解题思路 问题分析 题目描述:从m条地毯中选择最多k条,要求选出的地毯不形成环,且美丽度之和最大 关键限制: 选出的地毯不能形成环(即形成森林) 最多选k条地毯 需要最大化美丽度总和 算法选择 最大生成森林:这是最小生成树(MST)问题的变种 Kruskal算法变形: 按美丽度降序排序 贪心地选择美 阅读全文
posted @ 2025-04-28 22:01 CRt0729 阅读(37) 评论(0) 推荐(0)
摘要:解题思路 问题分析 问题描述:将n个居住点划分为k个部落,使得不同部落间的最小距离最大化 关键概念: 部落距离:两个部落中最近的两个居住点的距离 目标:在所有可能的划分中,找出使最近部落距离最大的划分方案 算法选择 逆向思维:将问题转化为图论问题 初始状态:每个点是一个独立部落(n个部落) 合并过程 阅读全文
posted @ 2025-04-28 21:53 CRt0729 阅读(68) 评论(0) 推荐(0)
摘要:解题思路 问题重述 我们需要连接P个边防哨所,其中有S个可以配备卫星电话(任意距离通信),其余哨所需要通过无线电收发器连接(距离不超过D)。目标是找到最小的D,使得所有哨所都能互相通信。 关键思路 最小生成树(MST)变形:本质上是要构建一个生成树,其中可以用S-1条卫星电话连接替代最贵的S-1条边 阅读全文
posted @ 2025-04-28 21:29 CRt0729 阅读(29) 评论(0) 推荐(0)
摘要:解题思路 问题分析 问题描述:给定平面上的n个点,其中部分点之间已有道路连接,需要添加最少的道路使所有点连通,且添加的道路总长度最小。 关键点:这是一个典型的最小生成树(MST)问题,需要考虑已有的道路。 算法选择 Kruskal算法:适合稀疏图,通过并查集高效管理连通分量,按边权排序后逐步选择最小 阅读全文
posted @ 2025-04-28 20:39 CRt0729 阅读(60) 评论(0) 推荐(0)
摘要:解题思路 最小生成树(MST)概念: 在连通无向图中,找到一棵包含所有顶点的树,使得所有边的权值之和最小 如果图不连通,则不存在最小生成树 Prim算法: 贪心算法,从单个顶点开始逐步扩展MST 维护一个dis数组记录当前MST到各顶点的最小距离 每次选择距离最近的未加入顶点,更新其邻居的距离 时间 阅读全文
posted @ 2025-04-28 19:54 CRt0729 阅读(115) 评论(0) 推荐(0)
摘要:描述 对于完全图G,若有且仅有一棵最小生成树为T,则称完全图G是树T的扩展出的。给你一 棵树T,找出T能扩展出的边权和最小的完全图G。 输入 第一行N表示树T的点数。 接下来N-1行:Si,Ti,Di;描述一条边(Si,Ti)权值为 Di。 保证输入数据构成一棵树。 对于20%的数据,N<=10 对 阅读全文
posted @ 2023-08-11 19:05 CRt0729 阅读(159) 评论(0) 推荐(0)
摘要:描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表 阅读全文
posted @ 2023-05-10 21:04 CRt0729 阅读(76) 评论(0) 推荐(0)
摘要:描述 求带权无向图的最小代价生成树。 输入 输入数据为多组,每组数据包含多行,第一行为2个整数n,e,n为图的顶点数,e为边数,接下来是e行,每行3个整数,前两个整数是一个顶点对,代表一条边所依附的两个顶点,第3个整数是边的权值。 所有值不超过20。 输出 请使用prim算法生成一棵生成树(从顶点1 阅读全文
posted @ 2023-05-01 13:30 CRt0729 阅读(94) 评论(0) 推荐(0)
摘要:问题引入: 我们先来回想一下生成树是如何定义的,生成树就是用n - 1条边将图中的所有n个顶点都连通为一个连通分量,这样的边连成子树称为生成树。 最小生成树很明显就是生成树中权值最小的生成树,那么我们即将要学的次小生成树或者K小生成树是怎么定义的呢,很明显就是生成树中权值第k小的生成树。 下面给出刘 阅读全文
posted @ 2023-05-01 09:24 CRt0729 阅读(106) 评论(0) 推荐(0)
摘要:描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动得热泪盈眶,开启了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了 t 区,而自己在 s 区。 该市有 m 条大道连接 n 个区,一条大道将两个区相连接,每个大 阅读全文
posted @ 2023-03-29 16:42 CRt0729 阅读(42) 评论(0) 推荐(0)
摘要:描述 某个局域网内有n(n≤100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅通程度(f(i,j)≤ 阅读全文
posted @ 2023-03-15 15:08 CRt0729 阅读(70) 评论(0) 推荐(0)
摘要:描述 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用数据线连接,费用将是相当庞大的。为了节省费用,我们采用数据的间接传输手段,即一台计算机可以 阅读全文
posted @ 2023-03-15 15:00 CRt0729 阅读(173) 评论(0) 推荐(0)