题目:

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采纳了你的建议,请计算出使所有奶牛都被安慰的最少时间。

输入格式

第1行包含两个整数N和P。

接下来N行,每行包含一个整数Ci。

接下来P行,每行包含三个整数Sj, Ej和Lj。

输出格式

输出一个整数, 所需要的总时间(包含和在你所在的牧场的奶牛的两次谈话时间)。

样例输入

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

数据规模与约定

5 <= N <= 10000,N-1 <= P <= 100000,0 <= Lj <= 1000,1 <= Ci <= 1,000。

题解:

首先要说一下,蓝桥杯这个测试数据是错的,mmp,我说我怎么咋也看不懂题的不出这个结论。
虽然样例是错的,但是试题的测试数据是对的,我找了一组

5 7
10
10
20
6
30
1 2 5
2 3 5
2 4 12
3 4 17
2 5 15
3 5 6
4 5 12

答案是

176

这组算是对的,可以放心使用(我觉得题目就想用这个数据,结果复制竟然出了问题Σ( ° △ °|||)︴)

接下来正式进入题解:这是我第一次用汉语去翻译汉语,可能有些不足,请大家多多包涵
Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场,牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性。
你首先要决定那些道路是需要保留的N-1条道路第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它需要Lj的时间。没有两个牧场是被一条以上的道路所连接找最小生成树)。
奶牛们非常伤心,因为她们的交通系统被削减了。你需要到每一个奶牛的住处去安慰她们。
每次你到达第i个牧场的时候(即使你已经到过),你必须花去Ci的时间和奶牛交谈**(走之前找好的最小生成树的路,每个点可能会经过多次,每经过一次就谈一次话ci,可以自己脑补一下,就像dfs回溯遍历每一条路,直到走完)**。
你每个晚上都会在同一个牧场(这是供你选择的)过夜每次都从出发点开始走且走回初始点),
直到奶牛们都从悲伤中缓过神来。在早上 起来和晚上回去睡觉的时候,你都需要和在你睡觉的牧场的奶牛交谈一次(出去和回来都谈话c1时间)
这样你才能完成你的 交谈任务。假设Farmer John采纳了你的建议,请计算出使所有奶牛都被安慰的最少时间。

总结

第一步:求出这个图的最小生成树,从一个点出发,最后又要回到这个点,最小生成树中的每一条边都要经过两次;
第二步:对于每一个节点,经过的次数是这个节点的度数之和;
第三步:起点也要进行考虑和选取,应为起点要经过两遍,那么找出来一个节点的权值最小的点作为起点使解最优;

行走路线:4,5,4,2,1,2,3,2,4
sum=6+12+30+12+6+12+10+5+10+5+10+5+20+5+10+12+6
根据规律可得:sum=min(最小点)+边的权值(边的权值=2*边权+前一个顶点ci+后一个顶点cj)
根据新边的生成最小生成树算sum就可以了

#include<bits/stdc++.h>
using namespace std;
const int maxn=10002;
int n,p,con[maxn],fa[maxn],ma[maxn],summ;
struct node{int x,y,v;
};
node no[100002];
int findd(int x)
{if(x!=fa[x])fa[x]=findd(fa[x]);return fa[x];
}
void csh(int n)
{for(int i=1;i<=n;i++)fa[i]=i;
}
bool cmp(node a,node b)
{return a.v<b.v;
}
int main()
{cin>>n>>p;for(int i=1;i<=n;i++)cin>>con[i];for(int i=0;i<p;i++){cin>>no[i].x>>no[i].y>>no[i].v;no[i].v=2*no[i].v+con[no[i].x]+con[no[i].y];}sort(no,no+p,cmp);for(int i=0;i<p;i++){cout<<no[i].x<<" "<<no[i].y<<" "<<no[i].v<<endl;}csh(n);memset(ma,0,sizeof(ma));summ=0;for(int i=0;i<p;i++){int xx=findd(no[i].x);int yy=findd(no[i].y);if(xx!=yy){fa[xx]=yy;summ+=no[i].v;ma[no[i].x]++;ma[no[i].y]++;}}int minn=999999;for(int i=1;i<=n;i++)if(minn>con[i])minn=con[i];summ+=minn;cout<<summ;return 0;}

【蓝桥杯】 安慰奶牛----详解相关推荐

  1. 蓝桥杯-安慰奶牛(java)

    算法训练 安慰奶牛   时间限制:1.0s   内存限制:256.0MB 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为 ...

  2. 第十二届蓝桥杯省赛详解

    试题A:空间 1B是8位,32位二进制数占用4B空间,1MB=2^10KB=2^20B 那么可以存放32位二进制数的个数为256*2^20*8/32=67108864 试题B:卡片 分析:因为数据只有 ...

  3. 蓝桥杯 安慰奶牛Python版

    马上就要考了,先不说太多,直接贴代码,顺便留着我以后看. 我菜菜,以前是学过C语言的数据结构,和基本的python语言,没学过Python版数据结构.这道题是看网上其他大佬的思路,然后写出来的.所以只 ...

  4. 蓝桥杯 基础练习全解 答案+解析 共17题 python

    关键字 A+B问题,数列排序,十六进制转八进制,十六进制转十进制,十进制转十六进制,特殊回文数,回文数,特殊的数字,杨辉三角形,查找整数,数列特征,字母图形,01字串,闰年判断,斐波那契数列,圆的面积 ...

  5. 蓝桥杯 ADV-179 算法提高 解二元一次方程组

    问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代表未知数,a, b, c, d, e, f为参数. 求解x,y 输入格式 ...

  6. 2023年电工杯B题详解

    2023电工杯B题思路讲解,以及模型讲解,都会用视频he文件的方式发给你们! 资料主要包括模型部分及论文框架 使用方法:模型由我们建立,大家根据视频讲解进行理解 论文框架是论文的主体,文字的描述千变 ...

  7. CTFshow菜狗杯-misc-wp(详解 脚本 过程 全)

    首先感谢ctf平台和各位出题的大佬 其次感谢各位读者,对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我 废话不多话开启你们的旅程吧 这个也是我这几天才看 一些见解和思路分享给你们 希望你 ...

  8. 蓝桥杯陶陶摘苹果C语言,Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

  9. 密码锁 java接口_Java实现 蓝桥杯VIP 算法提高 密码锁

    算法提高 题目 2 密码锁 时间限制:1.0s 内存限制:1.0GB 问题描述 你获得了一个据说是古代玛雅人制作的箱子.你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子 ...

最新文章

  1. shell调用python函数_shell调用python函数
  2. 使用个性化Profile代替Session
  3. Vue使用jsPdf将页面导出成pdf文件
  4. oracle时间运算
  5. Android Studio 版本号详解
  6. 使用C++实现功能下载文件
  7. 老司机普及的c++入门心得!
  8. 美的物联平台的云上实践与应用
  9. 真正解决ASP.NET每一个页面首次访问超级慢的问题
  10. 是单向链表吗_一步一步教你从零开始写C语言链表
  11. 谭浩强c语言第五版 第二章习题解答
  12. 软件项目详细设计方案怎么写?
  13. 开发你的第一个BLE应用程序—Blinky
  14. html批量修改 快捷键,html怎么设置快捷键?
  15. 深度学习推荐系统_深度推荐系统
  16. NLP: 0基础应用T5模型进行文本翻译代码实例~
  17. 51 nod 1010
  18. ovo svm_反思我在OVO担任远程产品设计实习生的时间
  19. SLAM中姿态估计的图优化方法比较(g2o/Ceres/GTSAM/SE-Sync)
  20. 2020-04-14

热门文章

  1. Python究竟属不属于嵌入式语言?
  2. 华大智造科创板上市:募资36亿市值413亿 汪健再敲钟
  3. Frontliner Heroes - 一组清新精美的新冠抗疫主题的免费商用插画
  4. 马尔可夫链(Markov Chain),隐马尔可夫模型
  5. .NET JavaScript点亮灯泡以及新建js文件作为外部代码
  6. 静子 今天的漫画上色图欣赏
  7. 自我提升| 如何利用下班后2小时增加收入
  8. 飞信msn多保险监控Linux服务器
  9. 2018 年春节总结
  10. 2020年合肥市青少年信息学科普日活动小学组试题