算法训练 安慰奶牛

问题描述(题目链接)

Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场,牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性。你首先要决定那些道路是需要保留的N-1条道路。第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它需要Lj的时间。没有两个牧场是被一条以上的道路所连接。奶牛们非常伤心,因为她们的交通系统被削减了。你需要到每一个奶牛的住处去安慰她们。每次你到达第i个牧场的时候(即使你已经到过),你必须花去Ci的时间和奶牛交谈。你每个晚上都会在同一个牧场(这是供你选择的)过夜,直到奶牛们都从悲伤中缓过神来。在早上 起来和晚上回去睡觉的时候,你都需要和在你睡觉的牧场的奶牛交谈一次。这样你才能完成你的 交谈任务。假设Farmer John采纳了你的建议,请计算出使所有奶牛都被安慰的最少时间。

样例注意!输出是178才是正确答案

样例输入
5 6
10
10
20
6
30
1 2 5
2 3 5
2 4 12
3 4 17
2 5 15
3 5 6
样例输出
176

思路

  1. 你每个晚上都会在同一个牧场(这是供你选择的)过夜
    这句话的意思是,你选一个节点,起点是它,终点也是它。
  2. 并查集
    我们选择n-1条边,使得权值和最小
    本题的关键就在于,处理边的权值
    对于一条边来说,我要使用这条边,意味着我在它的起点、边、终点这三个要素上花时间,即:起点-边-终点-边-起点(这个起点是折返的终点,也是下一条路径的起点,无需计算
    所以,这条边的权值=边所花的时间*2+起点的时间+终点的时间
  3. 当你走完最后一条路时,刚刚折返的终点需要再加入结果,因为它没有作为下一条路的起点
    这个值越小越好

AC代码

ll find(ll x){return x==fa[x]?x:fa[x]=find(fa[x]);}struct node
{ll u,v,w;
}t[NN];bool cmp(node l,node r)
{return l.w<r.w;
}void merge(ll x,ll y,ll w)
{ll fx=find(x);ll fy=find(y);if(fx!=fy){fa[fx]=fy;ans+=w;op++;}
}
void solve()
{cin>>n>>m;ans=INF;for(int i=1;i<=n;i++){cin>>b[i];ans=min(ans,b[i]);fa[i]=i;}for(int i=0;i<m;i++){cin>>t[i].u>>t[i].v>>t[i].w;t[i].w=t[i].w*2+b[t[i].u]+b[t[i].v];}sort(t,t+m,cmp);op=0;for(int i=0;i<m;i++){merge(t[i].u,t[i].v,t[i].w);if(op==n-1)break;  }cout<<ans;
}

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

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

相关文章

使用Docker部署MinIO并结合内网穿透实现远程访问本地数据

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

Pytest教程:一种利用 Python Pytest Hook 机制的软件自动化测试网络数据抓包方法

随着计算机技术的发展&#xff0c;使得网络应用的数量不断增加&#xff0c;因此网络数据抓包成为了网络应用开发和测试中非常重要的一部分。目前&#xff0c;已有许多网络数据抓包工具可供使用&#xff0c;例如 Wireshark、Tcpdump、Fiddler 等&#xff0c;但这些工具需要手动配…

快速排序 quicksort

参考视频&#xff1a; 快速排序算法_哔哩哔哩_bilibili #include <stdio.h>void QuickSort(int *arr,int L,int R); int main() {int arr[3] {1000,2,3};QuickSort(arr,0,2);for(int i 0 ; i < 3 ; i){printf("%d ",arr[i]);}return 0; } void QuickSor…

进程的学习

进程基本概念: 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息&#xff08;根据CPU占用率排序&#xf…

PHY6222系统级SOC蓝牙芯片低功耗高性能蓝牙MESH组网智能家居

简介 PHY6222是一款支持BLE 5.2功能和IEEE 802.15.4通信协议的系统级芯片&#xff08;SoC&#xff09;&#xff0c;集成了超低功耗的高性能多模射频收发机&#xff0c;搭载32-bit ARM?Cortex?-M0处理器&#xff0c;提供64K retention SRAM、可选128K-8M Flash、96KB ROM以及2…

基于单片机的多关节机械臂抓取系统

摘 要:在农业发展过程中,果实采摘是极度耗费人力的工作。为了减少农业生产过程中的人工成本,将人工智能应用于农业领域将是一种有效手段。基于单片机的控制设计出一款智能抓取系统,拥有六关节高自由度机械臂;爪子采用柔性材料,在加强爪子和果实贴合度的情况下减少对果实的…

微信小程序-人脸检测

微信小程序的人脸检测功能&#xff0c;配合蓝牙&#xff0c;配合ESP32 可以实现一些有趣的玩具 本文先只说微信小程序的人脸检测功能 1、人脸检测使用了摄像头&#xff0c;就必须在用户隐私权限里面声明。 修改用户隐私声明后&#xff0c;还需要等待审核&#xff0c;大概一天 …

十、线性代数二-线性相关

目录 1、线性相关的概念&#xff1a; 2、线性相关的代数表示&#xff1a; 3、线性相关的判断方法&#xff1a; 理解&#xff1a;线性相关指的是 向量组&#xff08;α1&#xff0c;α2&#xff0c;α3&#xff0c;...&#xff09;的 秩是 小于 k 的元数的&#xff0c;即齐次…

重磅福利!攻击面管理平台免费试用

活动时间&#xff1a;2024 年 2 月 26 日至 2024 年 6 月 1 日 活动内容&#xff1a;所有新注册的长亭云图极速版用户&#xff0c;即可享受 1 个月专业版试用&#xff0c;价值 2000 元&#xff01; 活动详情&#xff1a; ● 专业版试用期间&#xff0c;用户可享受以下权益&…

第二节:Vben Admin 登录逻辑梳理和对接后端准备

系列文章目录 上一节&#xff1a;第一节&#xff1a;Vben Admin介绍和初次运行 文章目录 系列文章目录前言项目路径的概述一、登录逻辑梳理loginApi接口查看Mock 二、后端程序对接准备关闭Mock 总结 前言 第一节&#xff0c;我们已经配置了前端环境&#xff0c;运行起来了我们…

文献速递:深度学习--深度学习方法用于帕金森病的脑电图诊断

文献速递&#xff1a;深度学习–深度学习方法用于帕金森病的脑电图诊断 01 文献速递介绍 人类大脑在出生时含有最多的神经细胞&#xff0c;也称为神经元。这些神经细胞无法像我们身体的其他细胞那样自我修复。随着年龄的增长&#xff0c;神经元逐渐死亡&#xff0c;因此变得…

el-form 表单文本标签label增加tooltip提示图标

需求&#xff1a;在el-form表单中&#xff0c;el-form-item的文本标签处增加提示语&#xff1b; 标签&#xff1a;el-form、el-form-item、el-tooltip&#xff1b; 实现&#xff1a; <el-form-item prop"basicScore"><span slot"label"><…

C 标准库 - <stdio.h> 详解

在 C 语言中&#xff0c;stdio.h 是一个非常重要的头文件&#xff0c;定义了一系列用于输入和输出的函数、变量和宏。本文将逐一介绍 stdio.h 中定义的函数&#xff0c;并提供每个函数的完整示例。 变量类型 在 stdio.h 中定义了三个变量类型&#xff1a; size_t&#xff1a…

nginx之状态页 日志分割 自定义图表 证书

5.1 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&#xff0c;在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module&#xff0c;否则配置完成之后监测会是提示语法错误注意: 状态页显示的是整个服务器的状态,而非虚拟主机的状态 server{…

【Git】Git命令的学习与总结

本文实践于 Learn Git Branching 这个有趣的 Git 学习网站。在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。你也可以直接访问网站的sandbox&#xff0c;自由发挥。 一、本地篇 基础篇 git commit git commit将暂存区&#xff08;staging area&#xff…

采访影视行业人“Sora入局,或将改变游戏规则?”

自OpenAI发布Sora已经过去了半个月&#xff0c;人们对于这个新兴的“文生视频”&#xff08;text-to-video&#xff09;大模型工具都已经有了初步的认识&#xff0c;经过半个月的沉淀&#xff0c;他们也陆续发布了一些更加令人震惊的demo&#xff0c;话不多说&#xff0c;我们先…

Bootstrap引入和使用

Bootstrap 基础用法 目录 Bootstrap 基础用法什么是Bootstrap&#xff1f;引入Bootstrap布局容器栅格系统表格样式表单样式text样式按钮样式图标 什么是Bootstrap&#xff1f; Bootstrap是一个开源的前端框架&#xff0c;用于对HTML和CSS代码进行封装&#xff0c;因此可以直接…

Springboot集成Druid实现监控功能

Druid是阿里巴巴开发的号称为监控而生的数据库连接池&#xff0c;在功能、性能、扩展性方面&#xff0c;都超过其他数据库连接池&#xff0c;包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等等等&#xff0c;秒杀一切。Druid可以很好的监控DB池连接和SQL的执行情况&#…

carpower

车载android 电源管理 车载音响电源管理器_definitely的技术博客_51CTO博客

打破数据孤岛,推动销售与财务协同升级!

客户介绍&#xff1a; 某科技有限公司是一家高科技公司&#xff0c;致力于为客户提供智能显示、物联网、云计算等领域的技术解决方案和产品。公司拥有强大的技术实力和研发团队&#xff0c;在业内享有盛誉。 客户痛点&#xff1a; 该公司在业务发展过程中&#xff0c;遇到了以…