蓝桥杯算法练习系统—金属采集(树形dp)

news2024/9/22 15:49:13

问题描述

人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了。一些节点之间有道路相连,所有的节点和道路形成了一棵树。一共有 n 个节点,这些节点被编号为 1~n 。人类将 k 个机器人送上了火星,目的是采集这些金属。这些机器人都被送到了一个指定的着落点, S 号节点。每个机器人在着落之后,必须沿着道路行走。当机器人到达一个节点时,它会采集这个节点蕴藏的所有金属矿。当机器人完成自己的任务之后,可以从任意一个节点返回地球。当然,回到地球的机器人就无法再到火星去了。我们已经提前测量出了每条道路的信息,包括它的两个端点 x 和 y,以及通过这条道路需要花费的能量 w 。我们想花费尽量少的能量采集所有节点的金属,这个任务就交给你了。

输入格式

第一行包含三个整数 n, S 和 k ,分别代表节点个数、着落点编号,和机器人个数。

接下来一共 n-1 行,每行描述一条道路。一行含有三个整数 x, y 和 w ,代表在 x 号节点和 y 号节点之间有一条道路,通过需要花费 w 个单位的能量。所有道路都可以双向通行。

输出格式

输出一个整数,代表采集所有节点的金属所需要的最少能量。

思路如下:

代码:

#include<bits/stdc++.h> 
#define endl '\n' 
using namespace std; 
typedef long long ll; 
const int N=1e5+10,mod=1e9+7;//(1ll<<63)-1 

vector<pair<int,int> >e[N]; 
int dp[N][15]; 
int n,s,k; 
void dfs(int u,int fa) 
{ 
    for(int i=0;i<e[u].size();i++) 
    { 
        int v=e[u][i].first,w=e[u][i].second; 
        if(v==fa)continue; 
        dfs(v,u); 
        for(int j=k;j>=0;j--)//顺序遍历会影响后面的状态 
        { 
            dp[u][j]+=dp[v][0]+w*2;//m=0 
            for(int m=1;m<=j;m++) 
            dp[u][j]=min(dp[u][j],dp[u][j-m]+dp[v][m]+w*m); 
        } 
    } 
} 
void solve() 
{ 
    cin>>n>>s>>k; 
    for(int i=0;i<n-1;i++) 
    { 
        int u,v,w; 
        cin>>u>>v>>w; 
        e[u].push_back({v,w}); 
        e[v].push_back({u,w}); 
    } 
    dfs(s,0); 
    cout<<dp[s][k]<<endl; 
} 
int main() 
{ 
    ios::sync_with_stdio(false); 
    cin.tie(0);cout.tie(0); 
    int T=1; 
    //cin>>T; 
    while(T--) { 
        solve(); 
    } 
    return 0; 
}

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

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

相关文章

消息队列—RabbitMQ如何保证消息可靠性?

1. 如何保证消息的可靠性&#xff1f; 先来看看我们的万年老图&#xff0c;从图上我们大概可以看出来一个消息会经历四个节点&#xff0c;只有保证这四个节点的可靠性才能保证整个系统的可靠性。 生产者发出后保证到达了MQ。MQ收到消息保证分发到了消息对应的Exchange。Exchan…

网络基础(一)初识

1、计算机网络背景 1.1、网络发展 1. 独立模式: 计算机之间相互独立&#xff1b; 2. 网络互联: 多台计算机连接在一起&#xff0c;完成数据共享&#xff1b; 3. 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起; 4. 广域网WAN: 将远隔千里的计算机都连在一起;…

vue3 报错 require is not defined

问题 require is not defined 原因 vite 不支持require的用法&#xff0c; webpack是支持的 解决 方法一&#xff1a; 更改vite使用语法 vite官网 方法二 安装转换插件vite-plugin-require-transform 仓库地址 参考 关于Vite不能使用require问题 方法二Vite 踩坑 —— …

PCL点云处理之最小中值平方(Lmeds法)拟合平面(二百三十四)

PCL点云处理之 最小中值平方法(Lmeds)拟合平面(二百三十四) 一、算法介绍一、拟合原理二、具体实现1.代码2.结果一、算法介绍 (本文提供详细注释,输出拟合平面参数和平面点云) Lmeds(Least Median of Squares)是一种统计学方法,用于拟合数据并减少异常值对拟合结果…

MySQL索引(图文并茂)

目录 一、索引的概念 二、索引的作用 三、创建索引的原则依据 四、索引的分类和创建 1、索引的分类 2、索引的创建 2.1 普通索引 2.1.1 直接创建索引 2.1.2 修改表方式创建 2.1.3 创建表的时候指定索引 2.2 唯一索引 2.2.1 直接创建唯一索引 2.2.2 修改表方式创建 …

百度小程序入口在哪里找到怎么打开百度词令关键词口令直达小程序?

百度小程序入口在哪里找到怎么打开百度词令关键词口令直达小程序&#xff1f; 一、百度搜索找到百度词令小程序 打开手机百度搜索「词令」即可找到百度词令关键词口令直达小程序&#xff1b; 二、百度小程序中心找到百度小程序 2.1、打开手机百度&#xff0c;点击底部我的&a…

SW工具下没有URDF

解决方案&#xff0c;下载

使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问

目录 ⛳️推荐 1. 安装Docker 2. 本地安装部署YesPlayMusic 3. 部署公有云YesPlayMusic播放器 3.1 安装cpolar内网穿透 3.2 固定YesPlayMusic公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一…

结构数列递推式的一组严格解

假设一个6*6的平面&#xff0c;这个平面的行和列可以自由的变换。有4点的数列排列为 通过结构加法&#xff0c;在4点和5点结构数列之间变换&#xff0c;迭代10次。 4点数列的顺序为 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 4-1 1 3 2 12 5 6 8 4 …

00后的AI创业风口,优牛企讯揭秘

随着人工智能技术的迅猛发展&#xff0c;AI已经成为创业的新风口&#xff0c;吸引了众多00后年轻人的目光。 他们以敏锐的市场嗅觉和创新精神&#xff0c;积极投身于这片充满无限可能的领域。 在这样一个竞争激烈的背景下&#xff0c;优牛企讯这款企业动态信息监控产品应运而…

三星工厂突发大火···  | 百能云芯

据韩媒报道&#xff0c;三星SDI位于韩国京畿道龙仁市基兴区的器兴工厂发生火灾。火灾发生在当地时间周四下午15:37左右&#xff0c;持续约20分钟后被扑灭。 幸运的是&#xff0c;此次火灾并未造成人员伤亡&#xff0c;但火场附近的一些帐篷已经被烧毁。消防部门目前正在调查火灾…

探索人工智能基础:从概念到应用【文末送书-42】

文章目录 人工智能概念人工智能基础【文末送书-42】 人工智能概念 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;作为当今科技领域的热门话题&#xff0c;已经深刻地影响着我们的生活和工作。但是&#xff0c;要理解人工智能&#xff0c;我们首先需…

Elastic 被评为 2024 年 Fast Company 最具创新力的公司

近期&#xff0c;Elastic 被《Fast Company》杂志评为 2024 年最具创新力的公司。《Fast Company》认为&#xff1a;作为企业搜索提供商的 Elastic&#xff0c;已将人工智能纳入其技术套件中&#xff0c;以帮助企业快速查找和分析相关企业数据。 这对 Elastic 是一个巨大的荣誉…

一文搞懂Java动态代理:为什么Mybatis Mapper不需要实现类?

在学习Java动态代理之前&#xff0c;我想让大家先思考这样几个问题。 JDK动态代理为什么不能对类进行代理&#xff1f;Mybatis Mapper接口为什么不需要实现类&#xff1f; 如果你还不知道上述问题的答案&#xff0c;那么这篇文章一定能消除你心中的疑惑。喜欢“IT果果日记”文…

日志集中审计系列(1)--- LogAuditor接收DAS设备syslog日志

日志集中审计系列(1)--- LogAuditor接收DAS设备syslog日志 前言拓扑图设备选型组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的…

多线程libtorch推理问题

一、环境 我出问题的测试环境如下: pytorch1.10+cu113 pytorch1.10+cu116 pytorch2.2+cu118 libtorch1.10.1+cu113 libtorch1.10.1+cu111 libtorch1.9.0+cu111 二、问题现象 最近封装libtorch的推理为多线程推理的时候,遇到一个现象如下: (1)只要是将模型初始化放到一个…

[项目前置]如何用webbench进行压力测试

测试软件 采用webbench进行服务器性能测试。 Webbench是知名的网站压力测试工具&#xff0c;它是由Lionbridge公司开发。 webbench的标准测试可以向我们展示服务器的两项内容&#xff1a; 每秒钟相应请求数 和 每秒钟传输数据量 webbench测试原理是&#xff0c;创建指定数…

14029.ZYNQMP的zcu102官方评估板SD卡资料

文章目录 1 ZCU SD 卡资料链接2 设备树反汇编提取资料1 ZCU SD 卡资料链接 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/135364615/2019.1+Release 2 设备树反汇编提取资料 /dts-v1/;/ {compatible <

稀碎从零算法笔记Day23-LeetCode:翻转二叉树

题型&#xff1a;链表、二叉树 链接&#xff1a;226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 这道题适合就着样例来做 题目样例 …

如何做时间管理?

前言 本篇是最近学习工作提效系列课程的第一篇&#xff0c;如何做时间管理&#xff1f;关于时间管理的内容老生常谈了&#xff0c;我自己之前也分享过针对时间管理的一些思考&#xff0c;比如 近期对「时间管理」的一些思考&#xff0c; 还有高效能人士的七个习惯的分享【读书…