【算法思考记录】力扣2477. 到达首都的最少油耗【Java,深度优先搜索】

原题链接

到达首都的最少油耗:一种优雅的解决方案

题目解析

这个算法题目描述了一个有趣的场景:一棵由城市和道路组成的树形结构,其中每个节点代表一个城市,边代表道路。所有城市的代表需要前往编号为0的城市——首都参加会议。任务是计算代表们到达首都所需的最小油耗,假设每座城市只有一辆车,且每辆车的座位数相同。

输入说明

  • roads: 一个二维数组,表示城市间的双向道路。
  • seats: 整数,表示每辆车的座位数。

输出说明

  • 返回一个整数,表示最小的油耗总量。

题解思路

这个问题可以转化为遍历树的问题。对于树中的每一个非首都节点,计算它的子树中有多少个节点,并将这个数除以座位数向上取整,得到的就是从该节点到首都所需的最少油耗。最后,将所有这些油耗相加即可。

Java 代码实现

class Solution {private long ans;private int dfs(int node, int fa, List<Integer>[] graph, int seats) {int size = 1;for (int chi : graph[node]) {if (chi == fa) {continue;}size += dfs(chi, node, graph, seats);}if (node != 0) {ans += (size - 1) / seats + 1;}return size;}public long minimumFuelCost(int[][] roads, int seats) {int n = roads.length + 1;List<Integer>[] graph = new ArrayList[n];Arrays.setAll(graph, e -> new ArrayList<>());for (int[] e : roads) {int x = e[0], y = e[1];graph[x].add(y);graph[y].add(x);}dfs(0, 0, graph, seats);return ans;}
}

解释

  1. 创建一个图 g,存储每个城市的相邻城市。
  2. 使用深度优先搜索(DFS)遍历树,计算每个子树的大小。
  3. 对于每个子树,将其大小除以座位数并向上取整,得到的结果加到总油耗 ans
  4. 返回总油耗。

结论

这个题解提供了一个高效且清晰的方法来解决“到达首都的最少油耗”问题,展示了如何利用树的结构和深度优先搜索算法来优雅地解决实际问题。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开放式蓝牙耳机什么品牌好?南卡、韶音、cleer开放式耳机哪个好?

开放式耳机采用不入耳的设计&#xff0c;提供更为舒适的佩戴体验&#xff0c;不会给耳朵带来持续的压力和损害&#xff0c;减轻身体负担。同时&#xff0c;由于无需将耳机插入耳朵内&#xff0c;减少了细菌滋生的可能性&#xff0c;避免了一些耳道健康问题。这些优点也是开放式…

P5 Linux 标准C库函数

目录 前言 01 标准输入、标准输出和标准错误 02 打开文件 fopen() 03 新建文件的权限 04 fclose()关闭文件 05 读文件和写文件 06 库函数 fseek 定位 6.1 lseek的使用 07 ftell()函数 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_Chen…

将显存和内存使用降低到原来的1/5左右

llm数据预处理的技巧 1&#xff0c;提前将数据集转为token 2&#xff0c;且可以提前全部对齐 3&#xff0c;存储的时候要每个序列存储为str([1,2,3]) 这样训练的时候再eval出来会让磁盘上显示多大数据内存就占用多大数据 根据上述的思路 如果能够将一个llm 大模型的整个推理过…

Dinky之安装部署与基本使用

Dinky之安装部署与基本使用 Dinky概览Linux安装部署解压到指定目录初始化MySQL数据库修改配置文件加载依赖启动Dinky Docker部署启动dinky-mysql-server镜像启动dinky-standalone-server镜像 Dinky的基本使用上传jar包Flink配置集群管理集群实例管理集群配置管理 创建作业语句编…

打破界限:SQL数据库水平扩展的8大挑战与机遇

数据库扩展是指提升数据库处理更多数据、更多用户或更多交易的能力。通常&#xff0c;SQL数据库采用垂直扩展的方式&#xff0c;即通过增加更多的CPU、内存或存储空间来增强数据库服务器的性能。然而&#xff0c;这种方法受限于单个服务器的硬件能力。 为了克服这一限制&#…

SpringBoot学习笔记-实现微服务:匹配系统(下)

笔记内容转载自 AcWing 的 SpringBoot 框架课讲义&#xff0c;课程链接&#xff1a;AcWing SpringBoot 框架课。 CONTENTS 1. 重构项目1.1 初始化Spring Cloud项目1.2 创建匹配系统框架 2. 实现匹配系统微服务2.1 数据库更新2.2 Web后端与匹配系统后端通信2.3 实现匹配逻辑2.4 …

《形式语言与自动机理论(第4版)》笔记(二)

文章目录 [toc]前导《形式语言与自动机理论&#xff08;第4版&#xff09;》笔记&#xff08;一&#xff09; 第三章&#xff1a;有穷状态自动机3.1|语言的识别3.2|有穷状态自动机即时描述 s e t ( ) set() set()例题问题 1 1 1解答问题 2 2 2解答 3.3|不确定的有穷状态自动机构…

pandas详细笔记

一&#xff1a;什么是Pandas from matplotlib import pyplot import numpy as np import pandas as pdarange np.arange(1, 10, 2) series pd.Series(arange,indexlist("ABCDE")) print(series)二&#xff1a;索引 三&#xff1a;切片 位置索引切片&#xff08;左闭…

.mallox勒索病毒解密:恢复数据与网络安全对策

引言&#xff1a; 在网络威胁不断演变的今天&#xff0c;恶意软件如.mallox勒索病毒已成为数字安全的一大挑战。本文将深入介绍.mallox勒索病毒&#xff0c;以及如何有效地恢复被其加密的数据文件&#xff0c;并提供一些建议用于预防此类威胁。如不幸感染这个勒索病毒&#xf…

【数据结构(七)】查找算法

文章目录 查找算法介绍1. 线性查找算法2. 二分查找算法2.1. 思路分析2.2. 代码实现2.3. 功能拓展 3. 插值查找算法3.1. 前言3.2. 相关概念3.3. 实例应用 4. 斐波那契(黄金分割法)查找算法4.1. 斐波那契(黄金分割法)原理4.2. 实例应用 查找算法介绍 在 java 中&#xff0c;我们…

Linux快速搭建本地yum更新audit

场景&#xff1a;内网一台服务器上线&#xff0c;需要更新audit版本&#xff0c;因无法与其他服务器通信&#xff0c;需临时配置本地仓库。 1、上传新版本操作系统iso到服务器 2、创建yum仓库文件存储目录 mkdir /opt/myrepo 3、挂载磁盘到/mnt mount /opt/Kylin-Server-V…

电脑CentOS 7.6与Windows系统对比:使用方式、优缺点概述

在多操作系统环境中&#xff0c;CentOS 7.6和Windows系统各自独占鳌头&#xff0c;它们在功能、稳定性、兼容性以及安全性等方面都有着各自的优点。这篇文章将对比分析这两个操作系统&#xff0c;以便用户能更好地了解它们的特点和使用方式。 一、使用方式 CentOS 7.6 CentO…

探索Web前端技术的变革与未来发展

Web前端技术作为构建现代互联网应用的重要一环&#xff0c;自诞生以来已经经历了多轮的发展和变革。本文将回顾过去的进展&#xff0c;介绍当前的前端技术栈&#xff0c;并展望未来前端领域的发展趋势&#xff0c;包括新兴技术和重要概念。 引言 在信息时代的快速发展的背景下&…

【剑指offer|图解|位运算】训练计划VI+撞色搭配

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;数据结构、剑指offer每日一练 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️训练计划VI&#xff08;题目难度&#xff1a;中等&#xff09;1.1 题目1.2 示例1.3 …

读书笔记-《数据结构与算法》-摘要3[选择排序]

选择排序 核心&#xff1a;不断地选择剩余元素中的最小者。 找到数组中最小元素并将其和数组第一个元素交换位置。在剩下的元素中找到最小元素并将其与数组第二个元素交换&#xff0c;直至整个数组排序。 性质&#xff1a; 比较次数(N-1)(N-2)(N-3)…21~N^2/2交换次数N运行…

基于ssm vue的风景文化管理平台源码和论文

摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;基于vue的木里风景文化管理平台也不例外&#xff0c;但目前国内的市场仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对…

SpringBoot集成mail发送邮件

前言 发送邮件功能&#xff0c;借鉴 刚果商城&#xff0c;根据文档及项目代码实现。整理总结便有了此文&#xff0c;文章有不对的点&#xff0c;请联系博主指出&#xff0c;请多多点赞收藏&#xff0c;您的支持是我最大的动力~ 发送邮件功能主要借助 mail、freemarker以及rocke…

[Firefly-Linux] RK3568修改控制台DEBUG为普通串口UART

文章目录 一、驱动文件二、menuconfig 配置三、dts 配置四、验证一、驱动文件 Rockchip UART作为控制台,使用fiq_debugger流程。rk-linux 一般会将uart2配置为ttyFIQ0设备。使用以下驱动文件: drivers/staging/android/fiq_debugger/fiq_debugger.c # 驱动文件 drivers/soc…

CoreDNS实战(七)-日志处理

本文主要用于介绍CoreDNS用来记录日志的几种方式以及在生产环境中遇到的一些问题和解决方案。 1 log插件 coredns的日志输出并不如nginx那么完善&#xff08;并不能在配置文件中指定输出的文件目录&#xff0c;但是可以指定日志的格式&#xff09;&#xff0c;默认情况下不论…

【Midjourney实战】| 新年礼盒元素设计

文章目录 1 初步提示词2 润色提示词3 提示词发散联想 这期实践任务&#xff0c;我们想去做一个新年礼盒的效果&#xff0c;最后我们想把不同元素拼在一起&#xff0c;方便后期进行新年的相关设计 1 初步提示词 提示词初步我们乍一想&#xff0c;肯定要包括主体元素礼盒 新年礼…