【贾志豪NOIP模拟题】慰问员工 cheer 【最小生成树】【对边权值的一些处理】
Description
LongDD 变得非常懒, 他不想再继续维护供员工之间供通行的道路. 道路被用来连接 N(5 <= N <= 10,000)个房子, 房子被连续地编号为 1..N. 每一个房子都是一个员工的家. LongDD 计划除去 P(N-1 <= P <= 100,000)条道路中尽可能多的道路, 但 是还要保持房子之间的连通性. 你首先要决定那些道路是需要保留的 N-1 条道路.
第 j 条双向道路连接了房子 S_j 和 E_j (1 <= S_j <= N; 1 <= E_j <=
N; S_j != E_j), 而且走完它需要 L_j (0 <= L_j <= 1,000)的时间.没有两个房子是被一条以上的道 路所连接.
员工们非常伤心, 因为她们的交通系统被削减了. 你需要到每一个员工的住处去安 慰她们. 每次你到达第 i 个房子的时候(即使你已经到过),
你必须花去 C_i (1 <= C_i <= 1,000)的时间和员工交谈.
你需要从某一个房子出发(这是供你选择的),并最终回到这个房子。期间,你要经
过每个房子至少一次,并且当你经过某个房子的时候,你必须和这个房子里的员工 交谈(即使你已经到过).
假设 LongDD 采纳了你的建议,
请计算出使所有员工都被安慰的最少时间.
Input
* 第 1 行: 用空格隔开的两个整数 N 和 P
* 第 2..N+1
行: 第 i+1 行包含了一个整数: C_i
* 第 N+2..N+P+1 行: 第 N+j+1 行包含用空格隔开的三个整数: S_j, E_j 和
L_j
Output
* 第 1 行: 一个整数, 所需要的总时间(包含和在你所在的房子的员工的两次谈话
时间).
Sample Input
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
Sample Output
176
如果不考虑对每家每户的访问时间 也不考虑要往返的时间
则这题是一个最小生成树模板题
接下来考虑影响
我们对每条边的权值变成两倍再加上其两端点访问距离
再求最小生成树
贴代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int n,m;
struct edge
{
int u,v,l;
}a[100010];
int f[10010],c[10010]; int cmp(const void *a,const void *b)
{
return (((edge*)a)->l < ((edge*)b)->l ? -1 : 1);
} void read()
{
scanf("%d%d",&n,&m);
for (int i=1; i<=n; i++)
scanf("%d",&c[i]),f[i]=i; for (int i=0; i<m; i++)
{
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].l);
a[i].l<<=1;
a[i].l+=c[a[i].v]+c[a[i].u];
} qsort(a,m,sizeof(a[0]),cmp);
} int find(int x)
{
if (x == f[x]) return f[x];
return (f[x]=find(f[x]));
} void together(int u,int v)
{
int x=find(u),y=find(v);
f[x]=f[y];
} void kruscal()
{
int ans=0x7ffffff,x=0;
for (int i=1; i<=n; i++)
f[i]=i,ans=min(ans,c[i]); for (int i=0; i<m; i++)
{
if (find(a[i].u) == find(a[i].v)) continue;
together(a[i].u,a[i].v);
ans+=a[i].l;
x++;
if (x == n-1) break;
} printf("%d\n",ans);
} int main()
{
read();
kruscal();
return 0;
}
【贾志豪NOIP模拟题】慰问员工 cheer 【最小生成树】【对边权值的一些处理】的更多相关文章
- 【入门OJ】2003: [Noip模拟题]寻找羔羊
这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...
- NOIP模拟题汇总(加厚版)
\(NOIP\)模拟题汇总(加厚版) T1 string 描述 有一个仅由 '0' 和 '1' 组成的字符串 \(A\),可以对其执行下列两个操作: 删除 \(A\)中的第一个字符: 若 \(A\)中 ...
- 9.9 NOIP模拟题
9.9 NOIP模拟题 T1 两个圆的面积求并 /* 计算圆的面积并 多个圆要用辛普森积分解决 这里只有两个,模拟计算就好 两圆相交时,面积并等于中间两个扇形面积减去两个三角形面积 余弦定理求角度,算 ...
- 8.22 NOIP 模拟题
8.22 NOIP 模拟题 编译命令 g++ -o * *.cpp gcc -o * *.c fpc *.pas 编译器版本 g++/gcc fpc 评测环境 位 Linux, .3GHZ CPU ...
- NOIP模拟题17.9.26
B 君的任务(task)[题目描述]与君初相识,犹如故人归.B 君看到了Z 君的第一题,觉得很难.于是自己出了一个简单题.你需要完成n 个任务,第i 任务有2 个属性ai; bi.其中ai 是完成这个 ...
- 一些noip模拟题一句话题解
Problem A: 序列 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 12 Solved: 9[Submit][Status][Web Boar ...
- noip模拟题题解集
最近做模拟题看到一些好的题及题解. 升格思想: 核电站问题 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 任务:对于给定 ...
- NOIP 模拟题
目录 T1 : grid T2 : ling T3 : threebody 数据可私信我. T1 : grid 题目:在一个\(n*n\)的方格中,你只能斜着走.为了让问题更简单,你还有一次上下左右走 ...
- 9.22 NOIP模拟题
吉林省信息学奥赛 2017 冬令营 ...
随机推荐
- [no_code][Beta]项目展示博客
$( "#cnblogs_post_body" ).catalog() 团队项目链接 Beta阶段核心开发点: github 前端 github 后端 github OCR文档-含 ...
- Beta阶段第九次会议
Beta阶段第九次会议 时间:2020.5.25 完成工作 姓名 完成工作 任务难度 完成度 ltx 1.发现小程序身份认证bug和新闻列表获取bug2.修改新增页面风格 轻 90% xyq 1.修改 ...
- STM32时钟系统之利用 systick 定时器来实现准确的延时。
本篇文章带着大家来认识一下 STM32 的时钟系统,以及利用 systick 定时器来实现一个比较准确的延时. 我们首先从时钟说起,时钟在MCU中的作用,就好比于人类的心脏一样不可或缺.STM32 的 ...
- 【做题记录】[NOIP2016 普及组] 魔法阵
P2119 魔法阵 2016年普及组T4 题意: 给定一系列元素 \(\{X_i\}\) ,求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 . \[\begin{cases}X_ ...
- hdu 5108 Alexandra and Prime Numbers(水题 / 数论)
题意: 给一个正整数N,找最小的M,使得N可以整除M,且N/M是质数. 数据范围: There are multiple test cases (no more than 1,000). Each c ...
- When overwhelmed, take a break
When overwhelmed by, frustrated with, or tired of the work, taking a break will help with thinking a ...
- Docker 搭建 Jenkins 持续集成自动化构建环境
1.Docker镜像拉取 Jenkins 环境命令 docker pull jenkins/jenkins:lts 查看下拉取的镜像 docker images 2.通过容器编排方式构建 Jenkin ...
- 解决CentOS添加新网卡后找不到网卡配置文件,配置多网卡并设置静态路由
参考文章 https://blog.csdn.net/qq_36512792/article/details/79787649 使用VMware Workstation虚拟机安装好CentOS7虚拟机 ...
- Spring Security OAuth2 单点登录
1. OAuth 2.0 OAuth(Open Authorization)为用户资源的授权提供了一个安全的.开放而又简易的标准.最简单的理解,我们可以看一下微信OAuth2.0授权登录流程: 通过O ...
- LeetCode 重排链表 OPPO笔试
重排链表 几个关键点: 1. 双指针(快慢指针找中点)(用于反转后一部分) 2. 反转后一部分 (reverse函数) 3. 合并链表 合并的时候在笔试的时候想了一种比我之前想的简单的方法 从slow ...