每日一题 --- 2477. 到达首都的最少油耗

链式前向星解法 

核心点是我dfs两次,第一次是求出每个节点的叶子节点有多少个?

因为我们可以看做从当前节点出发到当前节点的根节点的话,那么需要知道当前节点叶子节点个数,也就是我们让当前节点的叶子结点(代表)先来到当前节点集合,那么这就是一个子问题

那么对于子问题解法,我们可以记忆化搜索或者利用递归特性

本题采用记忆化搜索解法来解决

f[i],代表最终会有几个人到i点集合

dp[i],代表到i点集训最少需要消耗多少油

class Solution {
public:
    int h[510000], ne[510000], e[510000], idx;
    bool st[110000] = {0};
    long long dp[110000] = {0};

    long long dfs1(int u, int seats, vector<long long>& f) {
        st[u] = true;
        for (int i = h[u]; i != -1; i = ne[i]) {
            int b = e[i];
            if (st[b]) continue;

            long long cnt = dfs1(b, seats, f);
            f[u] = f[u] + cnt;
        }
        return f[u];
    }

    long long dfs2(int u, int seats, vector<long long>& f) {
        st[u] = true;
        for (int i = h[u]; i != -1; i = ne[i]) {
            int b = e[i];
            if (st[b]) continue;

            dfs2(b, seats, f);
            dp[u] = dp[u] + (f[b] / seats) + ((f[b] % seats == 0) ? 0 : 1) + dp[b];
        }

        return dp[u];
    }

    void add(int a, int b) {
        e[idx] = b, ne[idx] = h[a], h[a] = idx++;
    }

    long long minimumFuelCost(vector<vector<int>>& roads, int seats) {
        vector<long long> f(110000, 1);
        f[0] = 0;
        memset(h, -1, sizeof(h));

        for (auto& e : roads) {
            int a = e[0];
            int b = e[1];
            add(a, b), add(b, a);
        }

        memset(st, 0, sizeof(st));
        dfs1(0, seats, f);

        memset(st, 0, sizeof(st));
        dfs2(0, seats, f);

        return dp[0];
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yolov8常用命令

1.运行预测 &#xff08;1&#xff09;运行目标检测模型&#xff1a; yolo predict modelyolov8n.pt sourcebus.jpg &#xff08;2&#xff09;运行目标检测与分割模型 yolo predict modelyolov8n-seg.pt sourcebus.jpg 2.模型训练 复制coco128.yaml更名为myDetect.y…

检测车牌的SIFT特征并匹配

# 代码5-14 检测车牌的SIFT特征并匹配 import cv2img1 cv2.imread(../data/plate.jpg) img2 cv2.imread(../data/car.jpg)sift cv2.SIFT_create() # 利用sift.detectAndCompute()函数找到特征点&#xff0c;计算描述符&#xff1b; kp1, des1 sift.detectAndCompute(img1, …

Unity Sentis首份教程来啦,利用AI模型创建先进功能

Unity 推出的 Sentis&#xff0c;赋予开发者将 AI 模型导入游戏和应用程序中的能力。现在&#xff0c;Sentis 已进入预发布的开放测试阶段&#xff0c;用户可以在所有类型的项目中实现物体识别、语音识别和智能 NPC 等复杂功能。 这些 AI 模型一旦通过 ONNX 文件标准导入&…

地图自定义省市区合并展示数据整合

需求一&#xff1a;将省级地图下的两个市合并成一个区域&#xff0c;中间的分割线隐藏。 1、访问下方地址&#xff0c;搜索并下载省级地图json文件。 地址&#xff1a;https://datav.aliyun.com/portal/school/atlas/area_selector 2、切换到边界生成器&#xff0c;上传刚刚下…

基于Java+SpringBoot+Vue3+Uniapp前后端分离考试学习一体机设计与实现企业级2.01版本(视频讲解,已发布上线)

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

【经验分享】gemini-pro和gemini-pro-vision使用体验

Gemini Gemini已经对开发者开放了Gemini Pro的使用权限&#xff0c;目前对大家都是免费的&#xff0c;每分钟限制60条&#xff0c;至少这比起CloseAI的每个账户5刀限速1min3条要香的多&#xff0c;目前已于第一时间进行了体验 一句话总结&#xff0c;google很大方&#xff0c;但…

web服务器之——搭建两个基于域名访问的网站

目录 要求&#xff1a; 一、准备工作&#xff1a;web服务器搭建 第一步&#xff1a;挂载 第二步&#xff1a;编辑配置文件 第三步&#xff1a;安装软件包 第四步&#xff1a;启动httpd 查看配置文件&#xff1a; 第五步&#xff1a;设置防火墙状态&#xff1a; 重启服务…

虹科技术 | IO-Link Wireless如何赋能工厂车间迈向无线自动化?

大规模定制、卓越运营和商业智能正在从根本上改变制造业&#xff0c;为了在竞争中立于不败之地&#xff0c;制造商需要更加灵活、通用、可扩展和具有成本效益的机器和生产线。随着制造商向工业 4.0 迈进&#xff0c;更好的适应性、更高的吞吐量和更短的停机时间是他们的共同要求…

【C++】策略模式

目录 一、简介1. 含义2. 特点 二、实现1. 策略接口&#xff08;Strategy Interface&#xff09;2. 具体策略类&#xff08;Concrete Strategies&#xff09;3. 上下文类&#xff08;Context&#xff09;4. 使用策略模式 三、总结如果这篇文章对你有所帮助&#xff0c;渴望获得你…

【Java系列】详解多线程(二)——Thread类及常见方法(下篇)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一…

删除员工信息和全局异常处理

删除员工&#xff1a; 删除员工信息&#xff0c;根据员工的id删除其实批量删除就是一种特殊的批量删除&#xff0c;所以&#xff0c;删除员工的功能&#xff0c;我们只需要开发一个接口就可以了。 删除员工的逻辑分析&#xff1a; controller层获取请求的参数&#xff1a; 接收…

大模型微调的“温度”参数,原来影响的是 softmax

大家好啊&#xff0c;我是董董灿。 在对大模型进行微调训练时&#xff0c;经常会看到几个重要的超参数&#xff0c;用来控制大模型生成文本的效果。 其中一个超参数叫做 Temperature&#xff0c;中文名字叫温度&#xff0c;初见时很是不解&#xff0c;为啥一个模型还有温度这个…

【问题处理】—— lombok 的 @Data 大小写区分不敏感

问题描述 今天在项目本地编译的时候&#xff0c;发现有个很奇怪的问题&#xff0c;一直提示某位置找不到符号&#xff0c; 但是实际在Idea中显示确实正常的&#xff0c;一开始以为又是IDEA的故障&#xff0c;所以重启了IDEA&#xff0c;并执行了mvn clean然后重新编译。但是问…

36、什么是池化算法

池化算法也是 CNN 网络中非常常见的算法。 池化这一算法理解起来比较简单,从名字中或许可以看到一些东西:从一个像素池子中选取一些有代表性的像素出来。 常见的池化有最大池化和平均池化。最大池化就是从像素池子中选取最大值出来,而平均池化就是从像素池子中选取平均值出…

Ganache结合内网穿透实现远程或不同局域网进行连接访问

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 前言 Ganache 是DApp的测试网络&#xff0c;提供图形化界面&#xff0c;log日志等&#xff1b;智能合约部署时需要连接测试网络。 Ganache 是一个运行在本地测试的网络,通过结合cpol…

一文搞清楚“并发与并行”“串行与并行”“线程与进程”的区别

目录 &#x1f436;6.1 并发与并行 &#x1f436;6.2 串行与并行 1. 基本概念 2. 举个&#x1f330; 3. 适用场景 &#x1f436;6.3 线程与进程 1. 基本概念 2. 进程与线程的区别 3. 线程调度: &#x1f436;6.1 并发与并行 并行&#xff1a;指两个或多个事件在同一时…

2023年OceanBase开发者大会-核心PPT资料下载

一、峰会简介 2023年OceanBase开发者大会主要涵盖了OceanBase的最新技术进展、产品更新以及开发者工具的发布。大会发布了OceanBase 4.1版本&#xff0c;公布了两大友好工具&#xff0c;升级了文档的易用性&#xff0c;并统一了企业版和社区版的代码分支。这些举措全面呈现了O…

【算法题】开源项目热度榜单(js)

解法 const lines ["4","8 6 2 8 6","camila 66 70 46 158 80","victoria 94 76 86 189 211","athony 29 17 83 21 48","emily 53 97 1 19 218", ]; const lines2 ["5","5 6 6 1 2","…

Python:pipdeptree 语法介绍

相信大家在按照一些包的时候经常会碰到版本不兼容&#xff0c;但是又不知道版本之间的依赖关系&#xff0c;今天给大家介绍一个工具&#xff1a;pipdeptree pipdeptree 是一个 Python 包&#xff0c;用于查看已安装的 pip 包及其依赖关系。它以树形结构展示包之间的依赖关系&am…

json Deserialization of Python Objects

openweathermap.json {"coord": {"lon": 114.0683, "lat":22.5455},"weather":[ {"id": 803, "main":"Clouds", "description":"多云", "icon":"04d"}],"…