C - Rumor CodeForces - 893C
目录
题目链接
一些话
流程
套路
ac代码
题目链接
C - Rumor
CodeForces - 893C
一些话
拆解流程的时候没想到res 开long long,但写的时候想到了,一开始还庆幸自己这次这么机灵,结果debug一直de不出错误点,还是靠学长提醒才发现printf没有用%lld。。。
还有一开始用标准find然后tle,以后还是都用路径压缩find好了
自己总结的路径压缩find套路有瑕疵,一直没发现,也是靠学长指点才发现错误。。
流程
父节点数组
值数组
find注意此题卡路径压缩
标准un加一个值比较,小的做父节点
编号1-n,q次关系
fori = 1 I <= n
读入值
whileq--
读入a,b
un(a,b)
while外查询并查集数
cnt改为res ,res += v[i] 注意res要开long long
cout << res < < end; 注意res开long long 后printf参数要改成%lld
套路
1、路径压缩find
条件:并查集必用
形式一:
int find(int x){if(f[x] != x) f[x] = find(f[x];return f[x];
}
形式二:
int find(int x){return f[x] == x ? x : f[x] = find(f[x]);
}
网络上还存在一种很长的形式三仅展示,不推荐使用:
int find(int x)
{int r=x;while(f[r]!=r)r=f[r];int i=x;int j;while(i!=r){j=f[i];f[i]=r;i=j;}return r;
}
ac代码
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int f[N],v[N];
int find(int x){if(f[x] != x) f[x] = find(f[x]);return f[x];
}
void un(int a, int b){int fa = find(a);int fb = find(b);if(fa != fb){if(v[fa] > v[fb]) f[fa] = fb;else f[fb] = fa;}
}
int main(){int n,q;scanf("%d%d",&n,&q);for(int i = 1;i <= n;i++){f[i] = i;scanf("%d",&v[i]);}while(q--){int a, b;scanf("%d%d",&a,&b);un(a,b);}long long res = 0;for(int i = 1 ;i <= n;i++){if(f[i] == i) res += v[i];}printf("%lld",res);return 0;
}
C - Rumor CodeForces - 893C相关推荐
- Rumor CodeForces - 893C
Vova promised himself that he would never play computer games... But recently Firestorm - a well-kno ...
- Rumor CodeForces - 893C(并查集)
Vova promised himself that he would never play computer games- But recently Firestorm - a well-known ...
- Rumor CodeForces - 893C(并查集基本操作:维护连通块最值)
题目链接 PS:这题也可以用dfs搜连通块,一遍搜一遍记录连通块的最值. AC代码: #include <iostream> #include <cstring> #inclu ...
- 集训队每周一赛2020-03-13(构造+找规律+字符串+并查集)
第三次周赛 A 飞 Gym 102416C 题解 B 流 CodeForces 1316B 题解 C 直 Gym 102535G 题解 D 下 CodeForces 1312C 题解 E 三 Code ...
- XUPT_STA2018(部分题解)
A - 一方通行和最大公约数I CodeForces - 664A 作为学园都市最强的lv5,一方通行必须解决一道数学题才能接触last order身上植入的病毒,请你帮他解决这个问题. 给出 ...
- Educational Codeforces Round 33 (Rated for Div. 2)C.Rumor并查集
Educational Codeforces Round 33 (Rated for Div. 2)C.Rumor并查集 题意:首先用并查集把N个人分成几块,然后每个块当中选取一个最小权值 加到答案中 ...
- Codeforces 题目合集+分类+代码 【Updating...】【361 in total】
961A - Tetris 模拟 ...
- CodeForces 375D Tree and Queries
传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...
- 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...
最新文章
- 浅谈 Math.BigMul 方法
- java 解析注解_Java知识点总结(注解-解析注解)
- nginx在linux reload报错,linux下安装nginx
- Android JNI入门第一篇——HelloJni
- 大厂提供什么样的软硬件来吸引人才?
- QT Creator应用程序开发——01简单按钮显示
- 2005/7/15[随便写写]
- Android Bitmap OutOfMemory 解决办法
- 程序猿必备工具『CSDN浏览器助手』之超实用小工具测评
- 终于我还是放手了, 但是只想说,暂别 Aptana Studio 3,Phpstorm来吧!(附:个人遇到的小问题的解决方法)...
- python画二维图_使用python绘制二维图形示例
- c++篇 vc++2010设置和c#一样的代码段,vs2010 两下tab设置
- 记腾讯一面 | 掘金技术征文
- Leetcode 109.有序链表转换二叉搜索树
- java打印特殊符号_Java Poi 在Excel中输出特殊符号的实现方法
- VMware Workstation12安装win 7企业版激活
- 重装win10系统后不能上网如何解决?
- html5+css3实现2D动画效果演示
- 所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。
- 微信小程序十二时辰时钟