牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)
链接:https://ac.nowcoder.com/acm/contest/548/C
来源:牛客网
题目描述
最近,实力强大的 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,含义见上所述。
接下来一行,包含 k 个整数,表示立华奏已经学习过的知识点。如果 k=0,则此处为一空行。接下来 m 行,每行 3 个整数 Xi,Yi,HiXi,Yi,Hi,描述一种联系。
输出描述:
如果立华奏能够学习完所有的知识点,输出一行 Yes。否则输出 No
输入
4 3 2 5
4 5 6 7
2 3
1 2 3
1 3 2
3 4 2
输出
Yes
思路:创建一个虚拟节点(我是用0) 然后对于已学的点和没学 以及有关联的点进行建边 最后Kruska跑一边
但是这题卡常 所以写法上要尽量优化
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset> #include<cstdlib> #include<cmath> #include<set> #include<list> #include<deque> #include<map> #include<queue> #define ll long long int using namespace std; inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;} int moth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int dir[4][2]={1,0 ,0,1 ,-1,0 ,0,-1}; int dirs[8][2]={1,0 ,0,1 ,-1,0 ,0,-1, -1,-1 ,-1,1 ,1,-1 ,1,1}; const int inf=0x3f3f3f3f; const ll mod=1e9+7; const int maxn=7e6 + 100; inline int read(){char ch = getchar(); ll x = 0, f = 1;while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}while('0' <= ch && ch <= '9') {x = x * 10 + ch - '0'; ch = getchar();}return x * f; } struct node{int to;int from;int v;friend bool operator < (node a,node b){return a.v<b.v;} }; node edge[12000007]; int f[maxn]; int cnt=0; int n,m,k; ll t; void add(int from,int to,int va){ //加边 edge[++cnt].to=to;edge[cnt].v=va;edge[cnt].from=from; } int find(int x){if(x!=f[x])f[x]=find(f[x]); return f[x]; } int main(){//ios::sync_with_stdio(false);n=read(); m=read(); k=read();t=read();int time;int learn;int x,y,h;for(int i=1;i<=n;i++){ //给虚拟节点加上初始边 time=read();add(0,i,time);f[i]=i;}for(int i=1;i<=k;i++){learn=read(); //已经学习的点就和0关联起来就行 f[find(learn)]=0;}for(int i=1;i<=m;i++){ //关联点加边 x=read(); y=read(); h=read();add(x,y,h);}sort(edge+1,edge+1+cnt);ll ans=0;int num=k;for(int i=1;i<=cnt;i++){if(find(edge[i].from)!=find(edge[i].to)){// cout<<edge[i].from<<" "<<edge[i].to<<endl;f[find(edge[i].from)]=find(edge[i].to);++num;ans+=edge[i].v;}if(num==n||ans>t){break;}}if(ans>t)puts("No");elseputs("Yes"); }
转载于:https://www.cnblogs.com/wmj6/p/10661611.html
牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)相关推荐
- 牛客练习赛43 Tachibana Kanade Loves Probability(快速幂)
链接:https://ac.nowcoder.com/acm/contest/548/B 来源:牛客网 题目描述 立华奏在学习初中数学的时候遇到了这样一道大水题: "设箱子内有 n 个球,其 ...
- 牛客练习赛 43 CTachibana Kanade Loves Review 最小生成树(Java版失败)
链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...
- 牛客练习赛 43 CTachibana Kanade Loves Review 线性做法,贪心(Java版成功)
链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...
- Tachibana Kanade Loves Review(克鲁斯卡尔 最小生成树)
链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 Tachibana Kanade Loves Review 时间限制:C/C++ 2秒,其他语言 ...
- 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)
链接:https://ac.nowcoder.com/acm/contest/548/F 来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始 ...
- 牛客练习赛43 回顾
链接:https://ac.nowcoder.com/acm/contest/548/A 来源:牛客网 题目描述 这次 Tachibana Kanade 来到了一个神奇的学校参观,她发现了一些有趣的事 ...
- 牛客练习赛43 c Tachibana Kanade Loves Review
题目链接 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IODS 9102 的出题人.众所周知, IODS 是一场极其毒瘤的比赛.为了在这次比赛中取得好的 ...
- 牛客练习赛43 f Tachibana Kanade Loves Game
题目链接 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓废.她正在颓废一款名为<IODS 9102>的游戏. 在游戏中,立华奏拥有 k ...
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
最新文章
- “人工智能进行临床诊断,至少在今天看来不靠谱”
- 网络配置_Linux网络环境配置
- 江苏联合阿里云启动“1+30+300”工程 制造业大省欲打造智造模板
- python的赋值与参数传递(python和linux切换)
- Eclipse生成SSH传输密钥并实现GitHub的SSH代码提交
- 基于链表的两个集合的交集(C++)
- JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...
- Spring Cloud(5)---基于 Spring Cloud 完整的微服务架构实战
- 使用vue的生命周期函数_异步_同步获取字典数据---基于Vue的uniapp手机端_前端UI_uview工作笔记003
- 初识Visual Studio 2010(四)—— 创建ASP.NET网站
- htc one m7刷Linux,htc one m7刷coloros系统教程
- 俄文输入法_【俄语怎么学】手把手教你使用俄语输入法
- 稳定的服务器主板,高稳定英特尔S2400SC2双路服务器主板
- java自定义lock锁
- 2018 NOIP 普及组
- Alice和Bob的故事---非对称加密
- C# 国际化问题之CultureInfo(小数点的不同一些欧洲国家习惯使用,而非.)
- Java EE基础练习题
- 小米note2 支付宝指纹支付 -10008
- Python代码实现NIST随机性测试
热门文章
- java 发 腾讯企业邮_(更新)Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
- android咖啡动画,WaveLineView 一款性能内存友好的录音波浪动画
- 最高月薪18K,再努力一下,再前进一下,也许成功离你只有一步之遥~
- P4766 [CERC2014]Outer space invaders(区间dp)
- Thinking in uml 大象 系统用例
- java mongodb 多表关联查询,多条件查询,分页,排序
- JS对图片进行黑白化
- CVPR 2022 | QueryDet:使用级联稀疏query加速高分辨率下的小目标检测
- 使用Jil序列化JSON提升Asp.net web api 性能
- 5个问题,理清做用户画像的成功之道