79: cf 444E 并查集+思维
$des$
$sol$
把边从小到大排序,枚举每条边作为答案,然后把两个点合并,
判断每条边是否可以作为答案时,
$cnt_i$ 表示节点 $i$ 已经合并的 $x$ 之和
$size_i$ 表示已经合并的节点的个数
$sum = \sum x$
将 $a$ 与外面的点合并时
判断条件 $size_a <= sum - cnt_a$
并查集维护。
$code$
#include <bits/stdc++.h> using namespace std; #define Rep(i, a, b) for(int i = a; i <= b; i ++) #define gc getchar()
inline int read() {
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} const int N = 1e5 + ; int n, Cnt[N], Size[N], fa[N], Sum;
struct Node {
int u, v, w;
bool operator < (Node a) const {
return this->w < a.w;
}
} G[N];
bool Ok; int Get(int x) {
return fa[x] == x ? x : fa[x] = Get(fa[x]);
} void Merge(int x, int y) {
x = Get(x), y = Get(y);
Size[x] += Size[y];
Cnt[x] += Cnt[y];
fa[y] = x;
if(Size[x] > Sum - Cnt[x]) Ok = ;
} int main() {
n = read();
Rep(i, , n - ) G[i] = (Node) {
read(), read(), read()
};
sort(G + , G + n);
Rep(i, , n) Cnt[i] = read(), Sum += Cnt[i];
Rep(i, , n) fa[i] = i, Size[i] = ;
int Answer = ;
Ok = ;
Rep(i, , n - ) {
if(Ok) Answer = G[i].w;
Merge(G[i].u, G[i].v);
}
cout << Answer;
return ;
}
79: cf 444E 并查集+思维的更多相关文章
- F - Number of Connected Components UVALive - 7638 (并查集 + 思维)
		
题目链接:https://cn.vjudge.net/contest/275589#problem/F 题目大意:就是给你n个数,如果说两个数之间的gcd!=1,那么就将这两个点连起来,问你最终这些点 ...
 - 并查集+思维——The Door Problem
		
一.问题描述(题目链接) 有n个门和m个开关,每个开关可以控制任意多的门,每个门严格的只有两个开关控制,问能否通过操作某些开关使得所有门都打开.(给出门的初始状态). 二.问题分析 大部分开关问题首先 ...
 - 并查集+思维——X-Plosives
		
一.问题描述(题目链接) 有n种化合物,每种化合物由两种元素组成.当几种的化合物数量等于他们所含不同元素的数量时,就会发生爆炸.现在依次给出化合物的组成,当新的化合物与之前的化合物放在一起会发生爆炸时 ...
 - [codeforces 859 E] Desk Disorder 解题报告 (并查集+思维)
		
题目链接:http://codeforces.com/problemset/problem/859/E 题目大意: 有$n$个人,$2n$个座位. 给出这$n$个人初始的座位,和他们想坐的座位. 每个 ...
 - CodeForces - 763A(并查集/思维)
		
题意 https://vjudge.net/problem/CodeForces-763A 一棵无根树中各个节点被染上了一种颜色c[i] 现在让你选择一个点作为根节点,使得这个根节点的所有儿子满足以该 ...
 - cf 【并查集】
		
http://codeforces.com/contest/1245/problem/D 题意就是:你需要让所有城市都有电,你看也在该城市建电站使他有电,同时你可以链接他与其他城市,使之有电 解决: ...
 - Codeforces Round #600 (Div. 2) D题【并查集+思维】
		
题意:给你n个点,m条边,然后让你使得这个这个图成为一个协和图,需要加几条边.协和图就是,如果两个点之间有一条边,那么左端点与这之间任意一个点之间都要有条边. 思路:通过并查集不断维护连通量的最大编号 ...
 - 洛谷 P2391.白雪皑皑  (并查集,思维)
		
题意:有\(n\)个点,对这些点进行\(m\)次染色,第\(i\)次染色会把区间\((i*p+q)\ mod\ N+1\)和\((i*q+p)\ mod\ N+1\)之间的点染成颜色\(i\),问最后 ...
 - B - Rikka with Graph HDU - 5631 (并查集+思维)
		
As we know, Rikka is poor at math. Yuta is worrying about this situation, so he gives Rikka some mat ...
 
随机推荐
- yii框架定时任务的操作
			
在项目根目录里找到console(操作台,控制台)文件夹,在console文件夹里建一个TestController文件,如图所示: 文件内部写如下内容: 切记该文件继承的Controller一定是 ...
 - Mysql表字段命令alter add
			
alter add命令用来增加表的字段. alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4 ...
 - C# 练习题 判断1至输入数值之间有多少个素数,并输出所有素数。
			
题目:判断1至输入数值之间有多少个素数,并输出所有素数.1.程序分析:判断素数的方法:用一个数分别去除2到当前数-1,如果能被整除,则表明此数不是素数,反之是素数. class Program { / ...
 - Spring-Boot之Admin服务监控-9
			
一.Spring Boot Admin用于管理和监控一个或者多个Spring Boot程序.Spring Boot Admin分为Server端和Client 端,Client端可以通过向Http S ...
 - ASP.NET MVC 页面静态化操作的思路
			
本文主要讲述了在asp.net mvc中,页面静态化的几种思路和方法.对于网站来说,生成纯html静态页面除了有利于seo外,还可以减轻网站的负载能力和提高网站性能.在asp.net mvc中,视图的 ...
 - vue 数据更新问题
			
在uni-app构建选项卡时,方法中改变的数组数据 无法更新v-if中的布尔值 在函数中打印出来是修改成功了,但在页面中并没有进行响应 布局如下: <swiper :current=" ...
 - JavaScript之DOM节点操作
			
a.appendChild(b) 追加标签 a是b的父级,将b追加到a中 追加标签 a.insertBefore(b,c); a是b和c的父级,在c前面插入b 删除标签 a.removeCli ...
 - 数据仓库模型ETL架构(DWI/DWR/DM)
			
1.DWI DWI:数据湖.数据砥柱,一般存放在HDFS 数据仓库的基础数据来源,各种杂七杂八的数据 关键点:数据清洗.数据整合.异常处理.增量获取 ETL:E-数据抽取.数据清洁.格式转换,T-生成 ...
 - Telnet入侵Windows2000
			
开启Telnet 打开控制面板,管理工具 计算机管理 连接刚刚探测到的主机 输入探测到的主机IP 如下图所示,连接成功 找到Telnet服务 启动Telnet服务 远程登录 注意 Telnet登录需要 ...
 - Linux 各系统目录作用及内容