力扣每日一题:2646. 最小化旅行的价格总和(2023-12-06)

力扣每日一题
题目:2646. 最小化旅行的价格总和
2023-12-06.png
日期:2023-12-06
用时:30 m 14 s
时间:8ms
内存:42.98MB
思路:先统计旅行中每个节点路过的次数(dfs方法),再计算减半后的价格之和的最小值(dp方法),最后比较下减半和未减半的价格。dp方法中,对于相邻的父子节点有两种情况:

  • 如果父节点价格不变,那么子节点的价格取减半和不变两种情况的最小值
  • 如果父节点价格减半,那么子节点的价格只能不变

代码:每条路上通过的城市数量实际就是图中每个节点的子节点数量。

class Solution {public int minimumTotalPrice(int n, int[][] edges, int[] price, int[][] trips) {list = new ArrayList[n];for(int i=0;i<n;i++){list[i] = new ArrayList<>();}for(int[] edge:edges){list[edge[0]].add(edge[1]);list[edge[1]].add(edge[0]);}cnt = new int[n];for(int[] trip:trips){end = trip[1];dfs(trip[0],-1);}int[] res = dp(0,-1,price);return Math.min(res[0],res[1]);}List<Integer>[] list;int end;int[] cnt;boolean dfs(int x, int fa) {if (x == end) {cnt[x]++;return true;}for (int y : list[x]) {if (y != fa && dfs(y, x)) {cnt[x]++;return true;}}return false;}int[] dp(int index,int target,int[] price){int prices = price[index]*cnt[index];int halfPrices = prices/2;for(int num:list[index]){if(num!=target){int[] res = dp(num,index,price);prices += Math.min(res[0],res[1]);halfPrices += res[0];}}return new int[]{prices,halfPrices};}
}

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

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

相关文章

Spring Boot学习(三十三):集成kafka

前言 下面是zookeeper和kafka的官网下载地址&#xff0c;大家可以学习下载 zookeeper下载地址&#xff1a;http://zookeeper.apache.org/releases.html kafka下载地址&#xff1a;http://kafka.apache.org/downloads.html 1、添加依赖 在 pom.xml 文件中添加kafka依赖&am…

项目中使用之Maven BOM

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 工具教程 ✨特色专栏&#xff1a; MyS…

Linux文件部分知识

目录 认识inode 如何理解创建一个空文件&#xff1f; 如何理解对文件写入信息&#xff1f; 如何理解删除一个文件&#xff1f; 为什么拷贝文件的时候很慢&#xff0c;而删除文件的时候很快&#xff1f; 如何理解目录 ​编辑 文件的三个时间 ​编辑 Access&#xff1a; …

Linux系统调试课:网络性能工具总结

文章目录 一、网络性能指标二、netstat三、route四、iptables沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章一起了解下网络性能工具。 一、网络性能指标 从网络性能指标出发,你更容易把性能工具同系统工作原理关联起来,对性能问题有宏观的认识和把握。这样,…

【LeetCode刷题-链表】--92.反转链表II

92.反转链表II /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ cla…

前端JavaScript入门-day08-正则表达式

目录 介绍 语法 元字符 边界符 量词 字符类&#xff1a; 修饰符 介绍 正则表达式&#xff08;Regular Expression&#xff09;是用于匹配字符串中字符组合的模式。在 JavaScript中&#xff0c;正则表达式也是对象&#xff0c;通常用来查找、替换那些符合正则表达式的…

服务器同时连接数突然变高是什么原因_Maizyun

服务器同时连接数突然变高的原因 在服务器运行过程中&#xff0c;我们有时会发现服务器的同时连接数突然变高。这种情况可能会引发一系列问题&#xff0c;如性能下降、资源耗尽等。那么&#xff0c;导致服务器同时连接数突然变高的原因有哪些呢&#xff1f;本文将对此进行探讨…

计算机设计大赛 选题推荐

0 前言 比赛介绍 中国大学生计算机设计大赛是中国高等教育学会“全国普通高校大学生竞赛排行榜”竞赛之一。自2008年开赛至2019年&#xff0c;一直由教育部高校与计算机相关教指委等或独立或联合主办。2023年&#xff08;第16届&#xff09;中国大学生计算机设计大赛是由、中…

书-用数组存储高于60低于70的人单独存起来

#include<stdio.h> # define N 10 //书-用数组存储高于60低于70的人单独存起来 int main(){float s[N]{68.2,62.3,63.4,34.5,45.6,56.7,67.8,78.9,89.0,100};int i;float diyu[100];int j0;for(i0;i<N;i){if(s[i]>60 && s[i]<70)diyu[j]s[i];//这里的范…

【SQL思考记录】力扣181. 超过经理收入的员工

原题链接 SQL 语句解释 此SQL查询旨在找出在公司中薪水高于其经理的员工。具体的查询语句和逻辑如下&#xff1a; SELECT a.Name AS Employee FROM Employee AS a,Employee AS b WHERE a.ManagerId b.IdAND a.Salary > b.Salary;组件解释&#xff1a; SELECT a.Name AS E…

【数据结构】——二叉树特点

前言&#xff1a;我们前面已经了解了二叉树的一些概念&#xff0c;那么我们今天就来了解下二叉树的遍历实现和一些性质。 二叉树的遍历方式有三种&#xff1a;前序&#xff0c;中序&#xff0c;后序。 前序&#xff1a;先根节点&#xff0c;再左子树&#xff0c;最后右子树。 中…

husky \ lint-staged \ commitlint 实现代码提交前检查

话不多说&#xff0c;直接上步骤&#xff1a; 1、安装husky pnpm install husky -D 2、在 package.json 的 script 添加命令 "scripts": {"prepare": "husky install" } 3、执行 pnpm run prepare 执行完项目根目录也会出现一个.husky文件…

绘制6层及以上PCB板,需要明白PCB板的结构和叠层

PCB主要由PP半固化片和core芯板压合而成&#xff0c;其中core芯板两面都有铜箔&#xff0c;是PCB板的导电介质&#xff1b;PP半固化片是绝缘材料&#xff0c;用于芯板的粘合。 在PP半固化片被层压后&#xff0c;其环氧树脂被挤压开来&#xff0c;将core芯板粘合在一起。 PCB的叠…

Python代码将txt里面多行json字符串转成excel文件

python 代码 将txt里面的多行json字符串转成excel history.txt文件json代码样例 Json转换Excel代码 import json import pandas as pddef json_out(file_path,excel_path):all_list[]with open(file_path, "r", encodingutf-8) as f:for line in f:all_list.append…

Tuxera NTFS2024安装包下载教程

在听到小凡的电话说“Tuxera NTFS for Mac软件安装失败&#xff0c;怎么办”的时候&#xff0c;小编心里真像有一万头草泥马在奔腾——苹果软件还能安装失败&#xff01;&#xff1f; 挥手把一万头草泥马赶走&#xff0c;脑补着苹果软件的安装&#xff0c;小编对着电话吼道&am…

开发相关论文收录

深度学习相关 https://download.csdn.net/download/zhaohad/88603183

配置主机与外网时间服务器同步时间

目录 NTP服务简介 时间管理命令 第一步&#xff1a;更改当前主机所在地的时间 方法一&#xff1a;使用tzselect命令查询需要的时区 1、使用tzselect命令查询需要的时区 2、添加变量到 ~/.bash_profile 文件中&#xff0c;即追加类似的内容&#xff1a; 3、重新连接一个…

LLM大语言模型(一):ChatGLM3-6B本地部署

目录 前言 本机环境 ChatGLM3代码库下载 模型文件下载 修改为从本地模型文件启动 启动模型网页版对话demo 超参数设置 GPU资源使用情况 &#xff08;网页对话非常流畅&#xff09; 前言 LLM大语言模型工程化&#xff0c;在本地搭建一套开源的LLM&#xff0c;方便后续的…

提取和计算特定时间范围内的日志行数

提取和计算特定时间范围内的日志行数 提取和计算特定时间范围内的日志行数通常需要结合日志中的时间戳以及一些文本处理命令。以下是一个简单的示例&#xff0c;假设日志文件中的时间戳格式为 YYYY-MM-DD HH:mm:ss&#xff1a; #!/bin/bash# 指定特定时间范围 start_time&quo…

深入了解UUID:生成、应用与优势

一、引言 在当今数字化时代&#xff0c;唯一标识一个对象的能力变得越来越重要。UUID&#xff08;Universally Unique Identifier&#xff0c;通用唯一标识符&#xff09;应运而生&#xff0c;作为一种保证全球唯一性的标识方法&#xff0c;广泛应用于各种场景。本文将详细介绍…