牛客练习赛43-C

链接:

https://ac.nowcoder.com/acm/contest/548/C

来源:牛客网

题目描述

​ 立华奏是一个刚刚开始学习 OI 的萌新。
最近,实力强大的 QingyuQingyu 当选了 IODS 9102 的出题人。众所周知, IODS 是一场极其毒瘤的比赛。为了在这次比赛中取得好的成绩,立华奏决定学习可能考到的每一个知识点。
在 QingyuQingyu 的博客中,立华奏得知这场比赛总共会考察选手 n 个知识点。此前,立华奏已经依靠自学学习了其中 k 个知识点。接下来,立华奏需要学习其他的知识点,每学习一个单独的知识点,需要消耗的时间为 TiTi 天。同时,某些知识点之间存在联系,可以加速学习的过程。经过计算,立华奏一共发现了其中 m 种联系,第 i 种联系可以表示为(Xi,Yi,Hi)(Xi,Yi,Hi),其含义为“在掌握了第 XiXi 个知识点和第 YiYi 个知识点中任意一个后,学习 HiHi 天即可掌握另一个知识点”。
留给立华奏的时间所剩无几,只有 t 天,因此,她想知道自己能不能在这 t 天内学习完成所有的知识点。

输入描述:

本题输入量较大,请注意使用效率较高的读入方式
输入的第一行包含四个整数 n, m, k, t,含义见上所述。接下来一行,包含 n 个整数,依次表示 T1,T2,⋯,TnT1,T2,⋯,Tn接下来一行,包含 k 个整数,表示立华奏已经学习过的知识点。如果 k=0,则此处为一空行。
接下来 m 行,每行 3 个整数 Xi,Yi,HiXi,Yi,Hi,描述一种联系。

输出描述:

如果立华奏能够学习完所有的知识点,输出一行 Yes。否则输出 No

示例1

输入

复制

4 3 2 5
4 5 6 7
2 3
1 2 3
1 3 2
3 4 2

输出

复制

Yes

说明

立华奏已经学习过了第 2, 3 个知识,由第 2 个关系,立华奏可以花 2 天学会知识点 1,在由关系 3, 立华奏可以 2 天学会知识点 4,因此总共需要花费 4 天,可以完成任务。

示例2

输入

复制

5 4 0 12
4 5 6 7 11 2 3
1 3 2
3 4 2
1 5 233

输出

复制

Yes

说明

立华奏比较菜,因此什么都没有学过。她可以选择先花 4 天的时间学会知识点 1。然后根据关系 1, 2,分别花 3, 2 天的时间学会知识点 2, 3,再根据关系 3,花 2 天的时间学会知识点 4。然后,她再单独学习知识点 5,花费1天,总共花费了 12 天 ,可以完成任务。请注意,虽然关系 4 允许立华奏在知识点 1 的基础上学习知识点 5,但需要的时间比单独学习还要多,因此立华奏不会在知识点 1 的基础上学习知识点 5.

备注:

0⩽k⩽n⩽106,m⩽5×106,t⩽1018,Ti,Hi⩽103

思路

最小生成树的变形,把点本身的值换成路径上的权重

代码

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <sstream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <iomanip>
#include <stack>
#include <climits>
#include <fstream>using namespace std;typedef long long LL;
const int INF = 0x3f3f3f3f;
const int N = 1000005;
const int MOD = 1e9 + 7;#define F(i, l, r) for(int i = l;i <= (r);++i)int read()
{int ret = 0, f = 1;char c = getchar();while(c < '0' || c > '9'){if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9'){ret = (ret << 3) + (ret << 1) + c - '0';c = getchar();}return ret * f;
}struct Edge
{int u, v, w;bool operator < (const Edge a) const{return w < a.w;}
}edge[N * 6];
int n, m, k, vis[N], fa[N], H[N];
LL t;int Find(int x)
{return fa[x]?fa[x] = Find(fa[x]):x;
}int main()
{int num = 0;n = read();m = read();k = read();scanf("%lld", &t);F(i, 1, n)H[i] = read();F(i, 1, k)H[read()] = 0;F(i, 1, n)edge[num++] = (Edge){0, i, H[i]};//把点的权重变成边F(i, 1, m){edge[num].u = read();edge[num].v = read();edge[num++].w = read();}sort(edge, edge + num);LL sum = 0;F(i, 0, num - 1){int x = Find(edge[i].u), y = Find(edge[i].v);if(x != y){fa[x] = y;sum += edge[i].w;}}puts(sum > t?"No":"Yes");return 0;
}

转载于:https://www.cnblogs.com/shuizhidao/p/10666381.html

最小生成树--牛客练习赛43-C相关推荐

  1. 牛客练习赛 43 CTachibana Kanade Loves Review 最小生成树(Java版失败)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...

  2. 牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 QingyuQingyu  ...

  3. 牛客练习赛43 回顾

    链接:https://ac.nowcoder.com/acm/contest/548/A 来源:牛客网 题目描述 这次 Tachibana Kanade 来到了一个神奇的学校参观,她发现了一些有趣的事 ...

  4. 牛客练习赛 43 CTachibana Kanade Loves Review 线性做法,贪心(Java版成功)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...

  5. 牛客练习赛43 Tachibana Kanade Loves Probability(快速幂)

    链接:https://ac.nowcoder.com/acm/contest/548/B 来源:牛客网 题目描述 立华奏在学习初中数学的时候遇到了这样一道大水题: "设箱子内有 n 个球,其 ...

  6. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)

    链接:https://ac.nowcoder.com/acm/contest/548/F 来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始 ...

  7. 牛客练习赛43 c Tachibana Kanade Loves Review

    题目链接 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IODS 9102 的出题人.众所周知, IODS 是一场极其毒瘤的比赛.为了在这次比赛中取得好的 ...

  8. 牛客练习赛43 f Tachibana Kanade Loves Game

    题目链接 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓废.她正在颓废一款名为<IODS 9102>的游戏. 在游戏中,立华奏拥有 k ...

  9. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

最新文章

  1. Python 基础语法(三)
  2. ASP.Net Core Razor 部署AdminLTE框架
  3. oracle中orand使用,Postgres兼容Oracle研究——orafce调研
  4. 2018年面试准备汇总
  5. python使用pandas和xlsxwriter读写xlsx文件
  6. Bind variables in 'in' condition(在in中动态的绑定参数(参数个数可变))
  7. 「leetcode」202. 快乐数:今天你快乐了么?
  8. 法律人学python_你要埋头苦学三个月,然后悄悄惊艳所有人。python速成大法满足你所有的要求!...
  9. 10 大C++ Web(HTTP)开发开源框架/库推荐
  10. 如何抢到腾讯云校园1元优惠资格(新版腾讯云)-更新
  11. 使用h5新增的canvas标签绘制太极图案-代码
  12. linux recovery模式是什么,recovery.img是什么
  13. RPL源路由的IPv6路由头[RFC6554译文]
  14. CSDN:2019年度CSDN博客之星评选竞赛——105号【一个处女座的程序猿】,感谢您,投上的宝贵一票,感谢!感恩!
  15. 判断字符串子序列【python】
  16. 【AE-MG动画全套学习教程】After Effects CC MG动画高效学习视频全套
  17. 联想笔记本声音太小怎么办_笔记本声音太小,小编告诉你笔记本电脑声音太小解决方法...
  18. 英文文献翻译成中文,推荐哪个软件?
  19. 浅谈大数据任务调度平台
  20. 2021-08-08 WPF控件专题 WrapPanel 控件详解

热门文章

  1. android 挂断 电话 反射,Android实现来电自动挂断实现机制
  2. 美股股票代码 A股 香港股票代码 上海股票代码 深圳股票代码csv
  3. 通过自定义ServiceHost实现对WCF的扩展[实例篇]
  4. ai智能视频智能分析系统
  5. java基础:Linux系统下GiB和GB的换算
  6. 联想650服务器做系统,联想RD650阵列 安装系统步骤
  7. 世界上最难的视觉图_世界上最难攀登的十座高峰!让人步步惊心
  8. MyBatis中接口代理异常org.apache.ibatis.binding.BindingException: Type * is not known to the MapperRegistry
  9. 游戏运营是什么?具体负责的工作有哪些?
  10. 地下水、土壤、地质、环境人看过来