leetcode:6243. 到达首都的最少油耗【变种子树大小统计 + 从边的角度出发 + 思维转换】

news2025/3/1 0:31:24

目录

  • 题目截图
  • 题目分析
  • ac code
  • 总结

题目截图

在这里插入图片描述
在这里插入图片描述

题目分析

  • 0作为root
  • 从边的角度出发
  • 每个点都向0的方向聚集
  • 比如大家已经由四面八方聚集到了x,x的fa固定的,假设为y
  • 那么x到y要多少辆车?
  • 设size(x)为x子树大小
  • x到y需要ceil(x / seats)量车
  • 每条边都需要计算一次这个数,累加到ans
  • 特别地,0没有fa节点,不用考虑
  • 也就是说,为了往0聚集,每条边都要承受一定的压力,这个压力需要由多少辆车来缓解?
  • 从叶子往root,边的压力是需要累加的,因为要一直走到root节点截止
  • 思路变为求解每个子树的大小,同时看看往上每条边的压力需要多少辆车来缓解

ac code

class Solution:
    def minimumFuelCost(self, roads: List[List[int]], seats: int) -> int:
        # 考虑每条边最少需要多少车
        # 向上取整
        # 考虑子树大小,向上的流量就是子树的大小
        ans = 0
        g = defaultdict(list)
        for x, y in roads:
            g[x].append(y)
            g[y].append(x)
        
        def dfs(x, fa): # 返回的是子树的size
            size = 1
            for child in g[x]:
                if child != fa:
                    size += dfs(child, x)
            if x: # 不统计root
                nonlocal ans
                ans += (size + seats - 1) // seats # size / seats 向上取整
            return size
        
        dfs(0, -1)
        return ans

总结

  • 我图论有点lj
  • 思维转换到子树大小统计
  • 怎么想到的?因为大家都往root靠拢,首先会聚集到一个lca,对于lca来说就是就是求子树大小了
  • 为什么要求子树大小?因为要往fa靠,下面的压力会聚集到这条边上,这就不得不求压力是多少?也就是子树大小了,完美。。。

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

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

相关文章

2022年第十三届蓝桥杯大赛湖南中医药大学第2场选拔赛(部分总结)

文章目录2008: 简单整数问题2005: 飞行棋2074: 几乎回文串2101: 通行密令2089: 密码1867: X星救援站2085: 千里走单骑2093: 最长等比子序列2087: 跳水比赛总结2008: 简单整数问题 [命题人 : admin] 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述 小明最近经常会思考一些关…

Oracle-AWR快照无法自动生成问题分析

前言: 近期处理了一起数据库AWR快照无法自动生成的问题,用户发现数据库在近期出现了AWR快照无法自动生成的问题,数据库整体负载正常,后面分析发现原因是由于AWR快照在生成过程中,执行的SQL语句出现超时导致。 问题: Oracle11.2.…

【课上笔记】第八章 图

图 8.1图的基本概念 8.1.1图的定义和术语 1.图的定义 ​ 图(Graph)由一个顶点集合Vn和一个边(或者弧)集合En组成,通常记为: G=(Vn,En)其中,Vn中有n(n>0)个顶点,En中有e&#…

stm32cubemx hal学习记录:FreeRTOS任务管理

一、基本配置 1、配置RCC、USART1、时钟84MHz 2、配置SYS,将Timebase Source修改为除滴答定时器外的其他定时器,因为滴答定时器被用于时钟基准,可以实现任务切换。Timebase Source是实现HAL_Delay等延时函数的 3、初始化LED的两个引脚 4、开…

HTTP VS HTTPS

一、网络协议 网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。 二、HTTP与HTTPS 1、HTTP (1&am…

Autoware中的点云3D聚类算法,保姆级算法阅读注释,一看就懂,非常详细!

综述 五大模块&#xff0c;看完等于点云入门~&#xff08;dog&#xff09; 实际步骤 输入激光雷达获得的点云 pcl::PointCloud<pcl::PointXYZ>::Ptr header:seq:序列长度stamp:获取点云的时刻frame_id:坐标系名称 points:保存点云的容器,类型为std::vector width:类型…

大小端的判断

1.关于进制 1.1 进制数与位数 n进制数中&#xff0c;一位最多表示到数字n-1 十进制中1位最多能表示9个数字 满则溢&#xff0c;溢则进位。 拿我们最常用的是10 进制来举例说明&#xff0c; 构成十进制的最小单位数: 1 2 3 4 5 6 7 8 9 0 十进制(其实只有从9到0这几个数字,1…

OSPF笔记(四):OSPF五种报文和五种常见LSA

一、OSPF五种报文 (使用IP承载&#xff0c;可靠&#xff09; 1.1 hello&#xff1a; 发现和维护邻居关系 &#xff0c;以太网10s一次 1.2 DBD&#xff1a; 发送链路状态数据库摘要 1.3 LSR&#xff1a; 请求发送特定的链路状态信息&#xff08;请求包&#xff09; 1.4 LSU&…

Pr2023(Premiere Pro)中文版软件下载「附带安装教程」

Premiere Pro 23.0 版专为帮助编辑人员制作创意内容而设计&#xff0c;提供了出色的字幕工具组合。借助改进功能&#xff08;如批量编辑时间轴中的标题剪辑、灵活的对齐控件等&#xff09;简化您的标题和图形工作流程。此版本包含稳定性和性能方面的基础改进&#xff0c;包括更…

用 Flutter 轻松做个红包封面

前言 在 Flutter 的开发中&#xff0c;最常见的就是层层的组件嵌套&#xff0c;因此不可避免会遇到子组件如何适配父组件的问题。比如&#xff0c;按钮的可点击区域是否要占满整个父组件&#xff1f;图片是居中还是居左&#xff1f;这些问题可以通过 Flutter 提供的FittedBox …

Rancher - 更换Linux发行版

Rancher - 更换Linux发行版 时间&#xff1a;2022年11月20日21:24:29 推荐&#xff1a;Linux CentOS7.9 一、为什么要更换/升级&#xff1f; CentOS7.9 停止维护时间 2024年06月30日 AnolisOS8 阿里云推出的Linux发行版&#xff0c;支持多计算架构&#xff0c;也面向云端场景…

公众号免费搜题系统搭建

公众号免费搜题系统搭建 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;…

算法篇-------贪心2

文章目录题目1-------活动选择题目2-----无重叠区间题目3------最多可以参加的会议数目题目4-------去除重复字母题目5------移掉K位数字题目6-----拼接最大数题目1-------活动选择 有n个需要在同一天使用同一个教室的活动a1, a2, …, an&#xff0c;教室同一时刻只能由一个活…

MapReduce基础

MapReduce入门 理解MapReduce的思想 MapReduce的思想核心是先分再合&#xff0c;分而治之所谓的分而治之&#xff0c;就是把一个复杂的问题&#xff0c;按照一定的分解方法分为等价的规模的若干部分&#xff0c;然后捉个解决&#xff0c;分别找出各个部分的结果没然后将各个部…

【学习笔记】mac安装maven与idea自带maven

一、安装Maven 1.1 场景一&#xff1a;mac安装Maven step1: 下载maven 到 maven官网下载压缩包&#xff0c;这里下载 apache-maven-3.8.6-bin.zip 压缩包&#xff1a; step2: 解压安装 解压maven压缩包&#xff0c;将解压得到的maven文件夹 “apache-maven-3.8.6” 放到合适…

Ubuntu22.04系统安装Unreal Engine 5.1.0

1.实现目标 在Ubuntu22.04系统上从源码构建安装Unreal Engine 5.1.0。 2.实现过程 2.1 正常流程 (1)从github上下载最新的release版本的源代码:5.1.0 release。 (2)解压缩代码,并打开终端,执行 ./Setup.sh,下载所需的各项依赖,文件大小约20GB,需下载2-3小时。 (…

【每日一题Day33】LC799香槟塔 | 动态规划

香槟塔【LC799】 我们把玻璃杯摆成金字塔的形状&#xff0c;其中 第一层 有 1 个玻璃杯&#xff0c; 第二层 有 2 个&#xff0c;依次类推到第 100 层&#xff0c;每个玻璃杯 (250ml) 将盛有香槟。 从顶层的第一个玻璃杯开始倾倒一些香槟&#xff0c;当顶层的杯子满了&#xff…

springmvc-day01

springmvc-day01 第一节 SpringMVC概述 1. SpringMVC 优势 SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后&#xff0c;目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首…

pytest集成allure报告(allure安装及配置以及如何实现集成)

一、allure安装及环境变量配置 1、先保证本地已装jdk1.8 首先安装JDK1.8&#xff0c;添加到环境变量path。 具体可以查看文章&#xff1a;https://blog.csdn.net/weixin_40608713/article/details/116103153?ops_request_misc%257B%2522request%255Fid%2522%253A%2522166892…

07_通信过程

知识点1【给路由器添加一块网卡】 知识点2【演示浏览器访问web服务器】 知识点2【局域网的划分】&#xff08;补充&#xff09; 知识点3【跨外网的不同局域网通信过程】&#xff08;补充&#xff09; 知识点4【LInux下的防火墙】&#xff08;了解&#xff09; 防火墙的分类…