HZNU-ACM寒假集训Day8小结 最小生成树
最小生成树(无向图)
Kruskal
给所有边按从小到大排序 形成环则不选择(利用并查集)
P1546 最短网络 https://www.luogu.com.cn/problem/P1546
- #include<iostream>
- #include<cstdio>
- #include<string>
- #include<algorithm>
- typedef long long ll;
- using namespace std;
- struct Node {
- int x, y, w;
- friend bool operator < (const Node& a, const Node& b) {
- return a.w < b.w;
- }
- };
- Node a[];
- int pre[];
- int Find(int x) {
- return pre[x] == x ? x : pre[x] = Find(pre[x]);
- }
- int main() {
- int n, k, cnt = ;
- scanf("%d", &n);
- for (int i = ; i < n; i++) {
- pre[i] = i;
- for(int j=;j<n;j++){
- scanf("%d", &k);
- if (j > i) { //矩阵只需判断一半
- a[cnt].x = i;
- a[cnt].y = j;
- a[cnt++].w = k;
- }
- }
- }
- sort(a, a + cnt);
- int ans = ;
- int p = ;
- for (int i = ; i <cnt; i++) {
- if (Find(a[i].x) != Find(a[i].y)) {
- ans += a[i].w;
- pre[Find(a[i].x)] = a[i].y;
- p++;
- if (p == n - ) break;
- }
- }
- printf("%d\n", ans);
- return ;
- }
HDU 1875 http://acm.hdu.edu.cn/showproblem.php?pid=1875
- #include<iostream>
- #include<cstdio>
- #include<string>
- #include<algorithm>
- typedef long long ll;
- using namespace std;
- struct Node {
- int x, y;
- double w;
- friend bool operator < (const Node& a, const Node& b) {
- return a.w < b.w;
- }
- };
- Node a[]; //数组注意开大
- int pre[];
- double x[];
- double y[];
- int Find(int x) {
- return pre[x] == x ? x : pre[x] = Find(pre[x]);
- }
- double dis(double x1, double y1, double x2, double y2) {
- return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
- }
- int main() {
- int T,c;
- scanf("%d", &T);
- while (T--) {
- int cnt = ;
- scanf("%d", &c);
- for (int i = ; i < c; i++) {
- pre[i] = i;
- scanf("%lf%lf", &x[i], &y[i]);
- for (int j = ; j < i; j++) {
- double dist = dis(x[i], y[i], x[j], y[j]);
- if(dist>=10.0&&dist<=1000.0){
- a[cnt].x = i;
- a[cnt].y = j;
- //printf("%d %d\n", a[cnt].x, a[cnt].y);
- a[cnt++].w = dist;}
- }
- }
- sort(a, a + cnt);
- double ans = ;
- int p = ;
- for (int i = ; i < cnt; i++) {
- if (Find(a[i].x) != Find(a[i].y)) {
- ans += a[i].w ;
- pre[Find(a[i].x)] = a[i].y;
- p++;
- if (p == c - ) break;
- }
- }
- if (p == c - ) printf("%.1f\n", ans*);
- else printf("oh!\n");
- }
- return ;
- }
HZNU-ACM寒假集训Day8小结 最小生成树的更多相关文章
- 中南大学2019年ACM寒假集训前期训练题集(基础题)
先写一部分,持续到更新完. A: 寒衣调 Description 男从戎,女守家.一夜,狼烟四起,男战死沙场.从此一道黄泉,两地离别.最后,女终于在等待中老去逝去.逝去的最后是换尽一生等到的相逢和团圆 ...
- 中南大学2019年ACM寒假集训前期训练题集(入门题)
A: 漫无止境的八月 Description 又双叒叕开始漫无止境的八月了,阿虚突然问起长门在这些循环中团长哪几次扎起了马尾,他有多少次抓住了蝉等等问题,长门一共回复n个自然数,每个数均不超过1500 ...
- HZNU-ACM寒假集训Day3小结 搜索
简单搜索 1.DFS UVA 548 树 1.可以用数组方式实现二叉树,在申请结点时仍用“动态化静态”的思想,写newnode函数 2.给定二叉树的中序遍历和后序遍历,可以构造出这棵二叉树,方法是根据 ...
- HZNU-ACM寒假集训Day1小结 STL 并查集
常用STL 1.优先队列 priority_queue 内部是用堆(heap)实现的 priority_queue<int> pq; 默认为一个“越小的整数优先级越低的优先队列” 对于一些 ...
- HZNU-ACM寒假集训Day12小结 数论入门 题解
算不出的等式 BJOI2012 看到这题 真没什么办法 无奈看题解 1.注意到p/q 联想到斜率 2.注意到 [ ] 联想到整点 注意到k在变化,构造一次函数 f(x)=p/q*x ,g(x)=q/p ...
- HZNU-ACM寒假集训Day12小结 数论入门
符号说明 a|b a整除b (a,b) a与b的最大公因数 [a,b] a与b的最小公倍数 pα||a pα|a但pα+1∤a a≡b(mod m) a与b对模m同余 a ...
- HZNU-ACM寒假集训Day11小结 贪心
1.刘汝佳紫书区间问题三大情况 1.选择不相交区间 贪心策略:一定要选择第一个区间 2.区间选点问题 贪心策略:取最后一个点 3.区间覆盖问题: n个闭区间,选择尽量少的区间覆盖一条指定线段[s,t] ...
- HZNU-ACM寒假集训Day10小结 单调栈-单调队列
数据结构往往可以在不改变主算法的前提下题高运行效率,具体做法可能千差万别,但思路却是有规律可循 经典问题:滑动窗口 单调队列O(n) POJ 2823 我开始写的: TLE 说明STL的库还是有点慢 ...
- HZNU-ACM寒假集训Day10小结 树-树形DP
树形DP 加分二叉树 洛谷P1040 注意中序遍历的特点:当根节点编号k时,编号小于k的都在其左子树上,编号大于k的都在右子树 转移方程 f[i,j]=max{f[i,k-1]*f[k+1,j]+d[ ...
随机推荐
- POJ 3349:Snowflake Snow Snowflakes 六片雪花找相同的 哈希
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 35642 Accep ...
- HihoCoder第二周与POJ3630:Trie树的建立
这又是两道一样的题,都是建立trie树的过程. HihoCoder第二周: 这里其实逻辑都很简单,主要在于数据结构struct的使用. #include <iostream> #inclu ...
- python matplotlib绘图/sklearn包--make_blobs()
1.make_bolbs() 函数 from sklearn.datasets.samples_generator import make_blobs import numpy as np impor ...
- wdcp升级php5.8到php7.1.12后安装swoole
http://pecl.php.net/package/swoole wget http://pecl.php.net/get/swoole-4.0.1.tgztar zxvf swoole-4.0. ...
- 我用Python帮朋友做了张猪肉数据分析图,结果。。。
却发现他是这么拿我当兄弟的 事情的经过是这样的: 我开开心心的去一家烧饼店吃饭 . 抬头一看,二师兄又涨价了 叹了口气,再这么下去真的要吃不起夹肉的烧饼了 点了两个烧饼一碗馄饨 快吃完的时候, ...
- imagenet下载及训练
imagenet 种子 迅雷打开验证集http://academictorrents.com/download/5d6d0df7ed81efd49ca99ea4737e0ae5e3a5f2e5.tor ...
- 《ES6标准入门》(阮一峰)--3.变量的解构赋值
1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前,为变量赋值,只能直接指定值. let a = 1; l ...
- redisTemplate注入为空
springboot2.*集成redis时,redis工具类中的redisTemplate注入后总是为空. 问题代码还原: 1.工具类定义成静态工具类,@Resource注入redisTemplate ...
- 如何用naviecat批量创建mysql数据
1.参考博文:https://blog.csdn.net/lelly52800/article/details/87267096 2.excel要与表结构一致 3.右键,导入向导,选择相应版本,点击“ ...
- golang开启随机端口并获取端口
listener, err := net.Listen("tcp", ":0") if err != nil { panic(err) } fmt.Printl ...