2477. 到达首都的最少油耗

Problem: 2477. 到达首都的最少油耗

文章目录

  • 思路
  • 解题过程
  • 复杂度
  • Code

思路

为了解决这个问题,我们使用深度优先搜索(DFS)算法来遍历给定的树形结构。在这个过程中,我们维护两个数组,size 和 cost,分别用于记录每个节点的子节点数量和到达该节点的总成本。对于每个节点,我们递归地访问其所有子节点,计算它们的子节点总数以及到达这些子节点的总成本。在回溯时,我们更新当前节点的成本,将子节点的成本加上从子节点到当前节点的额外成本。额外成本由子节点的总人数除以座位数向上取整得到,这是因为每辆车最多能坐seats人。

解题过程

初始化一个邻接列表grip,用来存储图中每个节点的邻居。使用roads数组填充邻接列表,构建图。定义size和cost数组,其中size[i]表示节点i的子节点数,cost[i]表示到达节点i的总成本。调用递归函数f,以头节点0开始,计算整个图的子节点数和成本。最终返回cost[0]作为到达首都的最少油耗。

复杂度

  • 时间复杂度: O ( n ) O(n) O(n),其中n是节点的数量。因为每个节点恰好被访问一次。
  • 空间复杂度: O ( n ) O(n) O(n),主要来自于递归调用栈的深度,最坏情况下为树的高度,即n。

Code

class Solution {public static long minimumFuelCost(int[][] roads, int seats) {int n = roads.length + 1; // 节点的数量ArrayList<ArrayList<Integer>> grip = new ArrayList<>();// 初始化for(int i = 0; i < n; i++) {grip.add(new ArrayList<>());} for(int[] r : roads) {grip.get(r[0]).add(r[1]);grip.get(r[1]).add(r[0]);}int[] size = new int[n]; // 记录子节点的个数long[] cost = new long[n]; // 记录子节点的花费f(grip, seats, 0, -1, size, cost); // 头节点0的父节点是-1return cost[0];}public static void f(ArrayList<ArrayList<Integer>> grip, int seats, int u, int p, int[] size, long[]cost) {size[u] = 1;for(int v : grip.get(u)) {if(v != p) {f(grip, seats, v, u, size, cost);size[u] += size[v];cost[u] += cost[v];cost[u] += (size[v] + seats - 1) / seats;}}}
}

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

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

相关文章

破局 AI 2.0 时代:利用 AI 提升自我核心竞争力

文章目录 破局 AI 2.0 时代&#xff1a;利用 AI 提升自我核心竞争力1. AI 2.0 时代1.1 特点1.2 发展1.3 影响 2. AI 2.0 时代的机遇 & 挑战2.1 AI 对行业市场的冲击2.2 挑战变为机遇2.3 不同场景下的 AI 效能提升2.3.1 自动化办公任务2.3.2 提升学习效率2.3.3 创意生成与内…

Golang 网络编程socket+tcp+udp

Part 26 - 网络编程 网络编程分类 基于 TCP/IP 的 Socket编程基于 HTTP 的 HTTP 编程 端口 0是保留端口1-1024是知名端口 21&#xff1a;ftp22&#xff1a;ssh23&#xff1a;telnet24&#xff1a;smtp80&#xff1a;http 1025-65535是动态端口 Socket 的使用流程 服务端 监…

LabVIEW光谱测试系统

在现代光通信系统中&#xff0c;光谱分析是不可或缺的工具。开发了一种基于LabVIEW的高分辨率光谱测试系统&#xff0c;通过对可调谐激光器、可编程光滤波器和数据采集系统的控制&#xff0c;实现了高效、高精度的光谱测量。 项目背景 随着光通信技术的迅速发展&#xff0c;对…

仿哔哩哔哩视频app小程序模板源码

仿哔哩哔哩视频app小程序模板源码 粉色的哔哩哔哩手机视频网页&#xff0c;多媒体视频类微信小程序ui前端模板下载。包含&#xff1a;视频主页和播放详情页。 仿哔哩哔哩视频app小程序模板源码

thinkphp6/8 验证码

html和后台验证代码按官方来操作 ThinkPHP官方手册 注意&#xff1a; 如果验证一直失败&#xff0c;看看Session是否开启&#xff0c; 打印dump(session_status());结果2为正确的&#xff0c; PHP_SESSION_DISABLED: Session功能被禁用&#xff08;返回值为0&#xff09;。…

数据库导入

【一】存储数据的演变过程 1.本地对象内存存储--》字典列表之类的存在我们所写的模块那里 2.txt文件---》要对数据进行转变格式以及拼接才能存储 3.json文件---》升级了一点&#xff0c;不用像txt那样 4.数据库应用--》解决了存放位置和数据格式问题 【二】数据库本质 "…

科普文:一文搞懂jvm实战(四)深入理解逃逸分析Escape Analysis

概叙 Java 中的对象是否都分配在堆内存中&#xff1f; 好了太抽象了&#xff0c;那具体一点&#xff0c;看看下面这个对象是在哪里分配内存&#xff1f; public void test() { Object object new Object(); }这个方法中的object对象&#xff0c;是在堆中分配内存么&#xff1…

【C语言】C语言编译链接和Win32API简单介绍

目录 翻译环境和运行环境翻译环境编译器预处理&#xff08;预编译&#xff09;编译链接 执行环境 Win32API是什么控制台程序控制台获取坐标COORDGetStdHandle函数GetConsoleCursorinfo函数CONSOLE_CURSOR_INFOSetConsoleCursorInfo函数SetConsoleCursorPostion函数GetAsyncKeyS…

Qt(MSVC)下报“语法错误缺少“}““语法错误缺少“常数“ 的解决办法

1.现象 目前我在工程中试图使用QHttpServer时&#xff0c;一编译&#xff0c;就报了一堆奇奇怪怪的错误&#xff1a; D:\Qt\httpServer\Qt5.15.2\include\QtHttpServer\qhttpserverrequest.h:75: error: C2143: 语法错误: 缺少“}”(在“(”的前面) D:\Qt\httpServer\Qt5.15.…

栈和队列---循环队列

1.循环队列的出现 &#xff08;1&#xff09;上面的这个就是一个普通的数据的入队和出队的过程我们正常情况下去实现这个入队和出队的过程&#xff0c;就是这个数据从这个队尾进入&#xff0c;从队头离开&#xff0c;但是这个加入的时候肯定是没有其他的问题的&#xff0c;直接…

人工智能笔记分享

文章目录 人工智能图灵测试分类分类与聚类的区别&#xff08;重点&#xff09;分类 (Classification)聚类 (Clustering) 特征提取 分类器&#xff08;重点&#xff09;特征提取为什么要进行特征提取&#xff1f;&#xff08;重点&#xff09;分类器 训练集、测试集大小&#x…

【分布式技术】——监控平台zabbix 介绍与部署

一、监控系统的相关知识 1.监控系统运用的原因 当我们需要实时关注与其相关的各项指标是否正常&#xff0c;往往存在着很多的服务器、网络设备等硬件资源&#xff0c;如果我们想要能够更加方便的、集中的监控他们&#xff0c;zabix可以实现集中监控管理的应用程序 监控的初衷…

Spring SimpleAsyncTaskExecutor学习

一. 简介 SimpleAsyncTaskExecutor&#xff0c;不是真的线程池&#xff0c;这个类不重用线程&#xff0c;每次调用都会创建一个新的线程&#xff0c;没有最大线程数设置&#xff1b;并发大的时候会产生严重的性能问题&#xff1b;在 Java 中创建线程并不便宜&#xff0c;线程对…

C#——封装详情

C# 封装 封装是面向对象编程中的一个核心概念&#xff0c;它使得对象的状态&#xff08;即数据&#xff09;不会被直接访问&#xff0c;而是通过方法&#xff08;即行为&#xff09;来控制和操作。封装可以提高代码的内聚性和可维护性&#xff0c;同时也提供了一种保护数据不被…

ARM汇编与机器码、汇编指令

文章目录 1. CISC与RISC指令集 2. ARM汇编指令 3. 汇编与机器码 4. 汇编指令格式 5. MOV指令 6. BL指令 7. B指令 8. ADD/SUB指令 9. LDR/STR指令 1. CISC与RISC指令集 根据指令的复杂度&#xff0c;所有CPU可以分为两类&#xff1a; CISC&#xff08;Complex Instr…

C#——多态详情

多态 多态: 是同一个行为&#xff0c;具有多个不同表现形式或形态的能力 多态分为两种 : 静态性多态: 函数重载&#xff0c;符号重载动态性多态: 虚方法&#xff0c;抽象类&#xff0c;接口 静态多态 在编译时&#xff0c;函数和对象的连接机制被称为早期绑定&#xff0c;…

知识图谱的符号表示

1、基于图的表示建模 2、有效标记图 3、属性图表示方法的优点和去点 4、RDF是什么&#xff1f;表达是有限的 5、OWL&#xff0c;本体语言 6、OWL有很多家族 7、属性图、RDF\三元组、关系图 ---------------------------PPT---------------------

三级_网络技术_07_IP地址规划技术

1.IP地址192.168.15.1/27的子网掩码可写为()。 255.255.255.192 255.255.255.224 255.255.255.240 255.255.255.248 2.IP地址块211.64.0.0/11的子网掩码可写为()。 255.192.0.0 255.224.0.0 255.240.0.0 255.248.0.0 3.IP地址块59.67.159.125/11的子网掩码可写为()。…

STM32与W25Q64 Flash:SPI通信协议的高效实现策略

摘要 在嵌入式系统中&#xff0c;SPI通信协议是实现微控制器与非易失性存储设备如W25Q64 Flash存储器之间数据交换的关键技术。本文将探讨STM32微控制器与W25Q64 Flash存储器通过SPI进行通信的高效实现策略&#xff0c;包括硬件配置、SPI接口编程、性能优化技巧以及实际代码示…

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法,亲测有效!!!

已解决 javax.xml.transform.TransformerFactoryConfigurationError 异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 一、问题分析 二、报错原因 三、解决思路 四、解决方法 五、总结 博主v&#xff1a;XiaoMing_Java 博主v&#x…