码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode:6243. 到达首都的最少油耗【变种子树大小统计 + 从边的角度出发 + 思维转换】


    目录

    • 题目截图
    • 题目分析
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    总结

    • 我图论有点lj
    • 思维转换到子树大小统计
    • 怎么想到的?因为大家都往root靠拢,首先会聚集到一个lca,对于lca来说就是就是求子树大小了
    • 为什么要求子树大小?因为要往fa靠,下面的压力会聚集到这条边上,这就不得不求压力是多少?也就是子树大小了,完美。。。
  • 相关阅读:
    Nacos 中的配置文件如何实现加密传输
    起号1个月后,我分析了一些AI数字人项目的红利期和优缺点
    数字孪生行业相关政策梳理--智慧水利领域相关政策(可下载)
    光谱下的养殖业:数据可视化的现代变革
    机器学习(二):线性回归
    从零学算法202
    以太坊==使用IDE remix.ethereum搭配metamask发布合约到测试网
    2023年全球市场数字干膜测量仪总体规模、主要生产商、主要地区、产品和应用细分研究报告
    java 企业工程管理系统软件源码+Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
    小目标检测3_注意力机制_Self-Attention
  • 原文地址:https://blog.csdn.net/weixin_40986490/article/details/127954569
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号