题目:医院设置(经典的树结构题目)

医院设置:用BFS与Floyd破解最短路径选址问题 最短路径算法是图论与工程优化中的基础工具,用于在带权或无权的网络中找到两点间代价最小的通路。当问题归结为无权图时,广度优先搜索(BFS)能以线性时间完成单源最短路径的计算;而Floyd算法则通过动态规划思想,一次性求出所有节点对之间的最短距离,适用于需要反复查询点对距离的场景。在设施选址、物流配送和网络部署等实际应用中,将居民点抽象为节点、道路抽象为边,即可用此类算法寻找使整体通行成本最小的位置。本文以洛谷P1364“医院设置”为例,探讨如何用BFS枚举与Floyd全源最短路两种思路,解决二叉树结构上的医院 阅读详情

题目描述

设有一棵二叉树(如图,其中圈中的数字表示结点中居民的人口,圈边上数字表示结点编号。现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻结点之间的距离为1。就本图而言,若医院建在1处,则距离和=4+12+2*20+2*40=136;若医院建在3处,则距离和=4*2+13+20+40=81……

输入输出格式

输入格式:

输入文件名为hospital.in,其中第一行一个整数n,表示树的结点数(n<=100)。接下来的n行每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链接,为0表示无链接;第三个数为右链接,为0表示无链接。

输出格式:

输出文件名为hospital.out,该文件只有一个整数,表示最小距离和。

输入输出样例

输入样例#1:

5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0

输出样例#1:

81 

 题解:

这里先贴代码:

#include<iostream>
#define INT_MAX 0x3f3f3f3f  // 小技巧:这个数即防止相加时溢出导致值变成负数,又表示了无穷大
using namespace std;
int n,w[101][101],a[101],l,r,minn=INT_MAX;
int main(){
	int i,j,k,total;
	cin>>n;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			w[i][j]=INT_MAX;
	for(i=1;i<=n;i++){
		w[i][i]=0;  // 防止后面在乘上权值的时候加上自己,但这样做需要处理一下Floyd部分
		cin>>a[i]>>l>>r;
		if(l>0)w[i][l]=w[l][i]=1;
		if(r>0)w[i][r]=w[r][i]=1;
	}
	for(k=1;k<=n;k++)  // Floyd
		for(i=1;i<=n;i++)
		if(i!=k)
			for(j=1;j<=n;j++)
				if(w[i][j]>w[i][k]+w[k][j]&&i!=j&&k!=j)
					w[i][j]=w[i][k]+w[k][j];
	for(i=1;i<=n;i++){
		total=0;
		for(j=1;j<=n;j++) total+=w[i][j]*a[j];
		if(total<minn) minn=total;
	}
	cout<<minn<<endl;
	return 0;
}

这题实在太简单了QAQ

但是有些小技巧可以参考一下:例如可以将这棵树转化为图,这样既方便了存储,又可以使FloydFloyd算法得到最短路径,一举两得awa

(这是我写过最短的代码了QAQ)

光速撤退~再见~

树的重心:隐藏在算法竞赛中的数学之美与高效解法 本文深入探讨了树的重心在算法竞赛中的数学之美与高效解法,通过定义、直观理解和实际案例展示了如何将O(n²)的暴力解法优化到线性时间复杂度。重点介绍了树的重心分解算法及其在动态树问题中的应用,帮助读者掌握这一强大工具,提升算法竞赛解题效率。 阅读详情

相关推荐

C#医院门诊系统源码解析:挂号并发、排班渲染与病历XML设计

医疗信息系统(HIS)核心在于业务强一致性与高可靠交互,其中挂号号源锁控、医生排班动态渲染、结构化电子病历是三大技术基点。基于C# WinForm + SQL Server的门诊系统需融合数据库事务隔离、UI线程安全、XML模板引擎等关键技术,解决并发抢号、高DPI界面错乱、富文本存储不可检索等工程痛点。此类系统广泛应用于区域医联体、基层医院信息化升级及HIS对接原型开发,尤其适合需快速交付、兼顾可维护性与等保合规的医疗软件项目。本文聚焦真实生产级C#门诊源码中的号源事务锁、DataGridView动态绑定

weixin_34068198的博客 395

医院设置(二叉树)

这道题是个二叉树(为什么有人要去用dfs,bfs去做??(▔___▔)) 题目描述 这道题让我们在这棵树上修建一家医院,而且让人们到医院的距离和最短,距离和也就是每一个点到医院的距离*这个点上有的人数(就这么简单) 首先我们可以建一个结构体,里面存了每一个点的信息:人数,左子树,右子树,根节点,到医院的距离。

a3863的博客 333

实现对图的一个指定的操作或用图解决一个应用问题

问题描述:n个村庄之间的无向图,边上的权值w(i,j)表示村庄i和j之间道路长度.现要从这n个村庄中选择一个村庄新建一所医院,使离医院最远的村庄到医院的路程最短.设计一程序求解此问题.

P1364 医院设置 【Floyd】

题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 111。如上图中,若医院建在1 处,则距离和 =4+12+2×20+2×40=136=4+12+2\times20+2\times40=136=4+12+2×20+2×40=136;若医院建在 333 处,则距离和 =4×2+13+20+40=81=4\times2+13+20+40=81=4×2+13+20+40=

ln2037的博客 596

保姆级教程:用CANoe的LIN Slave Conformance Tester搞定一致性测试(附LDF配置避坑点)

本文详细介绍了如何使用CANoe的LIN Slave Conformance Tester进行汽车电子LIN从节点一致性测试,包括测试环境搭建、LDF文件配置、多通道测试技巧及常见问题解决方案。通过实战案例和高级配置技巧,帮助工程师高效完成测试任务,确保LIN总线通信的可靠性。

weixin_30385925的博客 525

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

【洛谷】P1364 医院设置

洛谷P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 11。如上图中,若医院建在1 处,则距离和 =4+12+2×20+2×40=136=4+12+2×20+2×40=136=4+12+2\times20+2\times40=136=4+12+2×20+2×40=136=4+12+2×20+2×40=136=4+12+2×20+2×40=13

u014156276的博客 962

SIwave仿真手册——信号完整性仿真之S参数的提取(二)

上一篇简单了讲述了软件的各个操作界面,本次博客更新关于的仿真,因为第二章完整的内容比较多,所以分成好几篇博客进行分享。

luohuo9844的博客 1万+

信息学奥赛一本通 1338:【例3-3】医院设置 | 洛谷 P1364 医院设置

ybt 1338:【例3-3】医院设置 洛谷 P1364 医院设置图的存储结构:图的遍历:枚举尝试在每个结点建医院。确定在一个结点建医院后,从这个结点开始做深度或广度优先遍历,每遍历到一个新的结点,总加和加上该结点上数值(居民数)乘以该结点到医院所在结点的距离。搜索结束后,总加和即为居民到这位置的医院所走路程之和。 求出在每个结点建医院后得到的居民所走路程之和,比较并输出其中的最小值。 存储结构,可以使用带指向双亲结点指针的二叉树,也可以使用图的存储结构:邻接矩阵或邻接表。 由于该图是树型结构,搜索的过程中

君义NOIP的博客 3393

【面试系列】数据工程师高频面试题及详细解答

本文针对数据工程师岗位,提供了详尽的面试题库和解答,分为初级、中级和高级三个层次。初级面试题主要涉及基本的数据处理和ETL工具的使用,如SQL查询、数据清洗和基本的数据建模。中级面试题重点考察数据管道设计、数据库优化和大数据平台的应用。高级面试题则深入探讨高级数据处理技术、分布式系统架构和数据湖的实现。通过这些问题和解答,候选人可以全面了解数据工程师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据工程师岗位的关键技能领域。

在路上的专栏 2375

[实践篇]13.13 再来梳理一下HAB的设计原理

HAB全称为Hypervisor Abstraction,即硬件抽象,主要用于提供对HOST OS硬件资源的访问。

从0到1,突破自己 7260

c++ 医院设置

最短路

2301_76869282的博客 758

【教程4>第1章>第11节】使用MATLAB快速产生批量verilog语句加快FPGA开发

...........如果手动写,那么就非常麻烦,这个时候,我们借助matlab,则可以快速生成上述类型的verilog程序,我们编写如下的MATLAB语句。\n");\n");end。

FPGA/MATLAB学习教程/源码/项目合作开发 1241

【数据结构】医院设置

题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某 个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的 距离为l。如上图中,若医院建在1处,则距离和=4+12+2×20+2×40=136;若医院建在3处,则距离和=4×2+13+20+40=81„„ 输入 第一行一个整数n,表示树的结点数。(n≤100)接下来的...

CLIII的博客 815

使用 MATLAB/Simulink 构建一个 光伏-储能联合系统接入10kV配电网 的协同控制仿真模型

本教程详细介绍了基于Simulink的光伏-储能联合系统在配电网中的协同控制仿真方法。主要内容包括:系统结构设计(光伏阵列、储能电池、双向变流器等);建模流程(MPPT控制、BMS系统、PCS矢量控制);核心协同控制策略(功率平滑、削峰填谷、电压支撑的三层控制架构);仿真结果分析方法及性能评估指标。教程提供了从组件建模到系统集成的完整指导,并建议了模型预测控制、微网孤岛运行等进阶方向,帮助开发者掌握智能电网的关键仿真技术。通过该模型可实现可再生能源的高效利用与电网稳定运行的平衡。

amy_mhd的博客 217

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

医院设置(多源最短路径--Floyd算法)

医院设置今天我们借这个题来复习一下Floyd,这是多源最短路径比较常用的方法。 (来源:Luogu) P1364 医院设置 题目描述设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为l。如上图中,若医院建在1 处,则距离和=4+12+2*20+2*40=136;

Stockholm_Sun的博客 1327

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

从医院设置到带权重心:树形DP换根法全解析

树形DP是算法竞赛中处理树上最优化问题的常用技巧,而换根DP(二次扫描)是其中代表性的进阶思路。其核心原理是:先任选根节点做一次深度优先遍历,统计子树规模与初始代价,再通过转移方程dp[v]=dp[u]+tot-2*sz[v]推导出相邻节点的全局答案,从而把全源枚举的O(n²)复杂度优化到O(n)。该模型对应图论中的带权重心问题,在物流选址、医院布点、通信网络规划等场景中有广泛迁移价值。理解这一思想后,也能更清晰地辨析暴力BFS、Floyd全源最短路与树形DP各自的适用边界。本文以洛谷P1364“医院设置”

weixin_30086969的博客 337

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

洛谷P1364医院设置:树形DP换根与Floyd全源最短路详解

树作为基础数据结构,在路径规划、网络选址等场景中常需计算节点间的最短距离。经典的全源最短路算法如Floyd通过动态规划求出所有点对距离,而树形DP的二次扫描换根技巧则能在线性时间内完成树上最优根选择。两者各有优劣:Floyd实现简单,适合小规模图;换根DP高效,可应对大规模树结构。洛谷P1364医院设置正是融合这些知识的经典题目,通过C++实现两种解法,能帮助学习者深入理解建模与优化思路。

weixin_29309213的博客 173

树形动态规划与医院选址问题解析

树形动态规划是解决图论中树结构问题的重要方法,其核心思想是通过预处理子树信息实现高效计算。在树的重心应用中,通过两次DFS遍历即可将时间复杂度优化至O(n)。这种技术在解决类似医院选址问题时尤为有效,其中需要计算各节点到中心点的加权距离和。算法竞赛中,这类问题常考察对DFS/BFS遍历、动态规划状态转移的理解。本文以洛谷P1364为例,详解如何利用树形DP解决加权距离最小化问题,涉及邻接表存储、子树预处理等关键技术点,为处理大规模树结构问题提供通用解决方案。

weixin_31364787的博客 226

用C++搞定树的重心与直径:从LeetCode刷题到解决「医院选址」实际问题

本文深入探讨了树的重心与直径在C++中的实现与应用,从LeetCode刷题到解决「医院选址」等实际问题。通过详细的算法解析和代码示例,帮助开发者掌握树结构的核心概念,提升算法竞赛和实际应用中的问题解决能力。重点介绍了DFS算法寻找重心和两种计算直径的方法,并展示了如何将这些技术应用于优化问题。

weixin_28742653的博客 308

SpringBoot+Vue+MySQL医院后台管理系统毕设全栈开发实战指南

在医疗信息化与后台管理系统开发领域,SpringBoot、Vue与MySQL的组合已成为构建企业级管理平台的主流技术栈。这类系统以角色权限控制(RBAC)为核心,通过清晰的数据库表结构设计支撑挂号、诊疗、收费等完整业务链路。理解用户-角色-权限三层模型,掌握动态路由与按钮级权限的实现原理,是保障系统安全性与可用性的关键。从工程实践角度看,统一响应体封装、事务与乐观锁处理并发扣减、定时任务释放超时号源,均体现了后端设计的严谨度;而前端动态菜单刷新、Axios拦截器管理登录态,则直接决定用户体验。无论是毕业设计

weixin_35987118的博客 308

树形结构在医院选址问题中的算法优化与应用

图论中的树结构是一种重要的数据结构,具有无环和唯一路径的特性,广泛应用于路径优化问题。通过DFS/BFS遍历和LCA算法,可以高效计算树节点间距离。动态规划思想能进一步优化计算过程,将时间复杂度从O(n²)降至O(n)。这种技术在公共服务设施选址、物流中心规划等场景有重要价值。以医院选址问题为例,需要最小化人口加权的总距离代价,这涉及到树形DP和二进制提升等经典算法优化。实际应用中还需考虑加权边、多设施选址等扩展场景,体现了算法设计与工程实践的紧密结合。

weixin_32956805的博客 107

二叉树详解:从概念到应用,带你玩转树形结构

在学习了线性表(如数组、链表、栈、队列)之后,我们掌握了如何表示和处理具有“一对一”线性关系的数据。然而,现实世界中的许多关系并非简单的线性关系,而是呈现层次结构。例如,一个家族的族谱、计算机的文件系统、编译器对表达式的语法分析,甚至体育比赛的淘汰赛程,都天然具有树形层次。为了高效地处理这类问题,我们需要引入一种新的数据结构——树。树是一种非线性数据结构,它由节点和连接节点的边组成,具有层次关系。其中最常用、最简单的一种树就是二叉树——每个节点最多有两个子节点的树。

NCYMan的博客 574

NVIDIA-Nemotron-3-Nano-4B-BF16代码实现分析:从配置到前向传播的完整流程

NVIDIA-Nemotron-3-Nano-4B-BF16是一款融合Mamba2和Transformer架构的混合语言模型,专为高效推理和低资源环境优化。本文将深入剖析其代码实现细节,从配置系统到前向传播的完整流程,帮助开发者快速理解模型工作原理。 ## 配置系统详解:模型参数的核心定义 模型的配置系统集中在[configuration_nemotron_h.py](https://link

gitblog_00437的博客 962

一个初学者用 C++ 解答合并 K 个升序序列的心路历程

摘要 本文记录了作者从C语言转向C++学习过程中解决LeetCode第23题"合并K个升序链表"的心路历程。文章首先介绍了暴力解法(时间复杂度O(NK))的局限性,然后重点讲解了利用C++优先队列(priority_queue)进行优化降维的思路。详细剖析了优先队列的工作原理,包括其完整模板结构和自定义比较规则的实现方法,最终将时间复杂度优化至O(NlogK)。作者通过扑克牌的生动比喻,将抽象算法问题具象化,并分享了完整代码实现。文章最后鼓励编程初学者不要畏惧困难题目,强调扎实基础与善用

分享一些嵌入式Linux相关知识 350
上一篇: 学习笔记----最短路----Floyd
下一篇: 题目:扩展二叉树(树的基本操作)
ResCells
博客等级 码龄4年 191粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值