安慰奶牛 蓝桥真题

2024-02-22 19:08
文章标签 蓝桥 真题 奶牛 安慰

本文主要是介绍安慰奶牛 蓝桥真题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

 

这个题关键在于怎么处理这些点需要重复到达的问题 题目要求最后只剩一个树图 即只留(n-1)条边 我们把每条边的边权乘二 再加上左右两节点的点权 作为新的边权 然后套克鲁斯卡尔 最后加上一个最小的点权

 

 

1. 边权乘二

那么对于每一条边edge[i] 它都连接了以左节点edge[i].u为根的子树(左树)和以右节点edge[i].v为根的子树(右树) 而题目要求最后必须回到出发点 那么假设我们出发点在左树 现在要经过edge[i]去遍历右树上的节点 去时走了一次edge[i] 因为要回到出发点 所以又走了一次edge[i] 所以这个一来一回是必不可少的 又因为我们返回时再次经过edge[i]时 肯定已经把右树节点都处理完毕(不然你回来干什么。。) 所以每条边必走两次且只走两次

2. 加上左右两节点的点权

设节点p 其邻接边有 a b c d

如果我们走a来到了p(一次访问) 现在要通过b c d去遍历其下的子树 因为要回到出发点 所以在回程时必经a各一次(b c d共三次)

所以每个节点有多少邻接点 即度为多少 那它就要被经过几次

可这些度是谁提供的呢 当然是边啊 无向图中每条边会为左右两个节点各贡献一个度 所以在这里我们就可以把这些点权附加到边权上了 这样就可以处理了

3. 加上一个最小的点权

 

 

出发时还要安慰出发点的那头牛 等于经过了一次出发点 但我们是突然出现在出发点的 无法在出发点的度上体现出来 所以必须单独考虑

不管我们把谁作为出发点 1 2条是不变的 所以哪个点权值小就把谁作为出发点

 

 

 

 

好啰嗦。。

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 0x3f3f3f3f3f3f3f3fstruct node
{int u;int v;ll w;
};node edge[100010];
ll val[10010];
int f[10010];
int n,m;bool cmp(node n1,node n2)
{return n1.w<n2.w;
}int getf(int p)
{if(f[p]==p) return p;else{f[p]=getf(f[p]);return f[p];}
}bool unite(int u,int v)
{int fu,fv;fu=getf(u);fv=getf(v);if(fu!=fv){f[fv]=fu;return true;}else return false;
}int main()
{ll sum,minn;int i,cnt;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%lld",&val[i]);}for(i=1;i<=m;i++){scanf("%d%d%lld",&edge[i].u,&edge[i].v,&edge[i].w);edge[i].w=2*edge[i].w+val[edge[i].u]+val[edge[i].v];}for(i=1;i<=n;i++){f[i]=i;}sort(edge+1,edge+m+1,cmp);sum=0,cnt=0;for(i=1;i<=m;i++){if(unite(edge[i].u,edge[i].v)){sum+=edge[i].w,cnt++;}if(cnt==n-1) break;}minn=N;for(i=1;i<=n;i++){minn=min(minn,val[i]);}printf("%lld\n",sum+minn);return 0;
}

 

 

 

 

 

这篇关于安慰奶牛 蓝桥真题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736207

相关文章

华为OD机试真题-学生方阵-2024年OD统一考试(E卷)

题目描述 学校组织活动,将学生排成一个矩形方阵。 请在矩形方阵中找到最大的位置相连的男生数量。这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的。 注:学生个数不会超过10000 输入描述 输入的第一行为矩阵的行数和列数, 接下来的 n行为矩阵元素,元素间用""分隔。 输出描述 输出一个整数,表示矩阵中最长的位

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

大厂算法例题解之网易2018秋招笔试真题 (未完)

1、字符串碎片 【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac” 是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的 平均长度是多少。 输入描述: 输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’) 输出描述

上海大学《2022年836+915自动控制原理真题及答案》 (完整版)

Part1:2022年上海大学真题题目 学硕836 专硕915 Part2:2022年上海大学真题答案 学硕836 专硕915

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消

【蓝桥杯嵌入式(一)程序框架和调度器】

蓝桥杯嵌入式(一)程序框架和调度器 序、代码命名规则零、STM32和8051⼀、软件及环境安装⼆、⼯程框架搭建1.时钟配置2、SYS配置3、⼯程配置4、NVIC配置5.、Keil配置 三、系统初始化四、任务调度器 链接: 视频出处 序、代码命名规则 以下是一些常见的举例 零、STM32和8051 链接: 8位和32位单片机最本质区别 ⼀、软件及环境安装

【蓝桥杯嵌入式(二)Led、Key、Lcd】

蓝桥杯嵌入式(二)Led、Key、Lcd 五、Led模块1.原理图配置2. 知识点3.底层代码 六、Key模块1.原理图配置2.知识点3.底层代码底层代码(四⾏代码版本)底层代码(状态机版本) 七、LCD模块1.原理图配置2.知识点底层代码 五、Led模块 1.原理图配置 2. 知识点 链接: 上拉电阻的通俗解释 链接: 单⽚机怎么输出⾼电平!推挽输出和开

华为OD机试真题-猜字谜-2024年OD统一考试(E卷)

题目描述 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如 nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下.对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 1、变换顺序以后一样的,比如通过变换 w和e的顺序,“nwes”跟“news”是可以完全对应的: 2、字母去重以后是一样的,比如“woood”和“wood”是一样的,它们去重后都是“wod'请你写一个程序帮忙在

蓝桥杯:整数删除

// 蓝桥杯整数删除.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<stdio.h>#define MAX 100void findmin(int a[],int n,int& pos){int min=a[0];pos=0;//pos=0我开始忘了,特别注意