Codeforce 1095 F. Make It Connected 解析(思維、MST)

今天我們來看看CF1095F

題目連結

題目

給你\(n\)個點,每個點\(u\)還有一個值\(a[u]\),還有給你\(m\)條可能的邊。

任兩點\((u,v)\)都可能可以用\(a[u]+a[v]\)這個權值來連接。

一開始圖上沒有邊,求最小的權值使得圖連通。

前言

思考方向還是不夠正確阿...

想法

首先知道我們想要構造MST,並且注意到:如果不考慮多出來的\(m\)條邊,那麼從權值最小的點連到所有其他點就是一種最好的構造。

那麼我們只要把這\(n-1\)條邊納入考慮一起造MST就好。

程式碼:

const int _n=2e5+10;
int parent[_n], rank[_n];
inline void dsinit(int n) {for (int i = 0; i < n; i++)parent[i] = i;memset(rank, 0, sizeof rank);}
inline int dsfind(int e) {return parent[e] == e ? e : parent[e] = dsfind(parent[e]);}
inline void dsunion(int s1, int s2) {if (rank[s1] < rank[s2])swap(s1, s2);parent[s2] = s1;if (rank[s1] == rank[s2]) rank[s1]++;}
//以上是dsu模板
struct E{
int f,t;ll w;
bool operator<(const E& rhs)const{return w<rhs.w;}
};
int t,n,m,s1,s2,id=0,x,y;
ll a[_n],sum=0,w;
vector<E> e;
main(void) {ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>m;rep(i,0,n)cin>>a[i]; rep(i,0,m){
cin>>x>>y>>w;x--,y--;e.pb({x,y,w});
}id=0;rep(i,1,n)if(a[i]<a[id])id=i;
rep(i,m,m+n)if(i-m!=id)e.pb({id,i-m,a[id]+a[i-m]});
sort(all(e)); dsinit(n);
sum=0;rep(i,0,m+n-1){
s1=dsfind(e[i].f),s2=dsfind(e[i].t);
if(s1!=s2)dsunion(s1,s2),sum+=e[i].w;
}cout<<sum<<'\n';
return 0;
}

標頭、模板請點Submission看

Submission

F. Make It Connected 解析(思維、MST)的更多相关文章

  1. F. Moving Points 解析(思維、離散化、BIT、前綴和)

    Codeforce 1311 F. Moving Points 解析(思維.離散化.BIT.前綴和) 今天我們來看看CF1311F 題目連結 題目 略,請直接看原題. 前言 最近寫1900的題目更容易 ...

  2. A. Peter and Snow Blower 解析(思維、幾何)

    Codeforce 613 A. Peter and Snow Blower 解析(思維.幾何) 今天我們來看看CF613A 題目連結 題目 給你一個點\(P\)和\(n\)個點形成的多邊形(照順或逆 ...

  3. B. Game of the Rows 解析(思維)

    Codeforce 839 B. Game of the Rows 解析(思維) 今天我們來看看CF839B 題目連結 題目 有如下圖片所示的飛機座位\(n\)排,和\(k\)隊士兵,每隊數量不一定. ...

  4. A. Arena of Greed 解析(思維)

    Codeforce 1425 A. Arena of Greed 解析(思維) 今天我們來看看CF1425A 題目連結 題目 略,請直接看原題. 前言 明明是難度1400的題目,但總感覺不是很好寫阿, ...

  5. E. Almost Regular Bracket Sequence 解析(思維)

    Codeforce 1095 E. Almost Regular Bracket Sequence 解析(思維) 今天我們來看看CF1095E 題目連結 題目 給你一個括號序列,求有幾個字元改括號方向 ...

  6. C2. Power Transmission (Hard Edition) 解析(思維、幾何)

    Codeforce 1163 C2. Power Transmission (Hard Edition) 解析(思維.幾何) 今天我們來看看CF1163C2 題目連結 題目 給一堆點,每兩個點會造成一 ...

  7. B. Two Arrays 解析(思維)

    Codeforce 1417 B. Two Arrays 解析(思維) 今天我們來看看CF1417B 題目連結 題目 略,請直接看原題. 前言 a @copyright petjelinux 版權所有 ...

  8. C. k-Amazing Numbers 解析(思維)

    Codeforce 1417 C. k-Amazing Numbers 解析(思維) 今天我們來看看CF1417C 題目連結 題目 略,請直接看原題. 前言 我實作好慢... @copyright p ...

  9. D. Road to Post Office 解析(思維)

    Codeforce 702 D. Road to Post Office 解析(思維) 今天我們來看看CF702D 題目連結 題目 略,請直接看原題. 前言 原本想說會不會也是要列式子解或者二分搜,沒 ...

随机推荐

  1. 2020 巅峰极客 WP_ Re

    第一题:virus 是一个win32 的题,没给加壳. 主函数: int __cdecl main(int argc, const char **argv, const char **envp) { ...

  2. 基础篇:详解JAVA对象实例化过程

    目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...

  3. idea查询类的继承关系图

    方式一:在一个类中,鼠标右键: 结果如下图所示: 方式2:在一个类中 结果如图:

  4. oracle数据库外部连接无法访问

    服务器出现的问题是运行的项目无法访问oracle数据库连接,用plsql输入用户名密码后卡死,无法连接.但是通过命令窗口对oracle数据库操作正常,对oracle服务进行查看并重启,并无异常,运行t ...

  5. Java知识系统回顾整理01基础03变量05变量命名规则

    一.命名规则 变量命名只能使用字母 .数字. $. _ 变量第一个字符 只能使用: 字母. $. _ 变量第一个字符 不能使用数字 注:_ 是下划线,不是-减号或者-- 破折号 int a= 5; i ...

  6. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths 树上启发式合并(DSU ON TREE)

    题目描述 一棵根为\(1\) 的树,每条边上有一个字符(\(a-v\)共\(22\)种). 一条简单路径被称为\(Dokhtar-kosh\)当且仅当路径上的字符经过重新排序后可以变成一个回文串. 求 ...

  7. EntityFramwork基础用法

    一.EntityFramework(简称"EF")是什么? 在.NET3.5之前,我们经常编写ADO.NET代码或通过封装好的数据库访问层来与数据库进行交互,进行CRUD操作.这种 ...

  8. Python+Appium自动化测试(12)-通过坐标定位元素

    在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝 ...

  9. SpringBoot整合Mybatis 编译失败:找不到符号 程序包不存在

    问题描述:jpa不好用,转用mybatis,配置多数据源  但是配置后无法编译mvn clean install  dao层这些报错,找不到entity的包     问题解决:罪魁祸首:热部署的部分 ...

  10. 多测师讲解自动化测试 _如何解决验证码的问题_高级讲师肖sir

    自动化测试如何解决验证码的问题对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可 ...