博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
保留道路
阅读量:5850 次
发布时间:2019-06-19

本文共 1360 字,大约阅读时间需要 4 分钟。

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述

50%的做法:

先按照s升序排序。
从小到大枚举maxg,把g小于maxg的边全部选出来,(因为前面已经排过序了),造一棵最小生成树,更新答案。时间复杂度≈O(m*m)。
100分的做法:
按照g升序排序。
维护一个n-1条边的边集,是上一个建造的最小生成树的边集。
从前往后枚举maxg,把这条边按照s用插入排序插入到当前n-1条边的集合中。
在这样的n条边的集合中建造一颗最小生成树,最后再把用到的边存到边集中(就是将没用到的删去),从而维护了一个n-1的边集。
刚才所说的边集其实就是维护的一棵最小生成树。
时间复杂度≈O(m*n)。
因为最小生成树的性质:在当前的最小生成树中插入一条边,构成了环,把环中最长的边删去就是新的最小生成树。

60分代码:

#include
#include
#include
#include
#include
#include
#define LL long long#define N 50009using namespace std;int n,m,f[509];LL Ws,Wg,ans=(1ll*1<<62),order[N];struct H{ int u,v;LL s,g;}b[N];LL maxg,maxs,num;bool cmp(H x,H y) { return x.s

100分做法:

#include
#include
#include
#include
#include
#include
#define LL long long#define N 50009using namespace std;int n,m,f[509],cnt,num;LL ans=(1ll*1<<62);LL Ws,Wg,order[N],r;struct H{ int u,v; LL s,g;}b[N],q[N],tree[N];bool used[N];LL maxg,maxs;bool cmp(H x,H y){ return x.g
ans) continue;//这个剪枝可以减少很多多余的计算 int pos=cnt+1; for(int j=1;j<=cnt;j++) if(tree[j].s>b[i].s) { pos=j;break; } if(pos==cnt+1) tree[++cnt]=b[i]; else { ++cnt; for(int j=cnt;j>pos;j--) tree[j]=tree[j-1]; tree[pos]=b[i]; } if(cnt

转载于:https://www.cnblogs.com/dfsac/p/7587805.html

你可能感兴趣的文章
js_coding
查看>>
Linux平台Java调用so库-JNI使用例子
查看>>
PCM数据格式,多少字节算一帧
查看>>
Spring Data JPA
查看>>
KACK的处理方法
查看>>
POJ3438 ZOJ2886 UVALive3822 Look and Say【数列】
查看>>
IE6的height小BUG
查看>>
说说IUnitOfWork~DbContext对象的创建应该向BLL层公开
查看>>
强制卸载kernel
查看>>
web渗透测试中WAF绕过讲解(二)基于HTTP协议绕过
查看>>
【CSON原创】CSS的障眼法:利用border实现图片的翻转
查看>>
oracle:plsql学习总结(oracle database 10g sql 开发指南)
查看>>
〔转〕Word域的应用和详解2_等式和公式域
查看>>
FZU 1502 Letter Deletion
查看>>
寄存器是什么 有什么作用
查看>>
转载 《Python爬虫学习系列教程》学习笔记
查看>>
NGUI的输入框制作(attach- input filed script的使用)
查看>>
[异常笔记] zookeeper集群启动异常: Cannot open channel to 2 at election address ……
查看>>
mysql 03
查看>>
NgDL:第三周:浅层NN
查看>>