MST系列
1.POJ2485 Highways
蛮水的 数组一开始开小了卡了一会儿 我可能是个傻逼
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<string> using namespace std; ]; int find(int x){ return f[x]==x?x:f[x]=find(f[x]); } struct hh{ int x,y,z; }s[]; bool comp(hh a,hh b){ return a.z<b.z; } int main(){ freopen ("1.in","r",stdin); freopen ("1.out","w",stdout); int T; scanf("%d",&T); while (T--){ memset(s,,sizeof(s)); ; scanf ("%d",&n); ;i<=n;++i) ;j<=n;++j){ f[(i-)*n+j]=(i-)*n+j; int q; scanf ("%d",&q); if (i==j) continue; k++; s[k].x=i,s[k].y=j,s[k].z=q; } sort(s+,s+k+,comp); ,l=; ;i<=k;i++){ int e=find(s[i].x),g=find(s[i].y); if (e!=g){ f[e]=g; ans=max(ans,s[i].z); l++; ) break; } } printf("%d\n",ans); } ; }
2.POJ1679 The Unique MST
太傻逼了自己没打出来 参考blog:http://www.cnblogs.com/Howe-Young/p/4911992.html
顺带着也算是把次小生成树学完了 不过当晚打的时候愣是忘判vis了qwq绝望
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<string> #define inf 0x7ffff using namespace std; int n,m; ][],vis[],dis[],mx[][],pre[],u[][]; int prim(){ ; ;i<=n;++i) dis[i]=p[][i],pre[i]=; vis[]=,pre[]=,dis[]=; ;i<=n;++i){ int md=inf,v; ;j<=n;++j) if (!vis[j]&&dis[j]<md) md=dis[j],v=j; ; u[pre[v]][v]=,u[v][pre[v]]=; ans+=md,vis[v]=; ;j<=n;++j){ if (vis[j]) mx[v][j]=mx[j][v]=max(mx[j][pre[v]],dis[v]); else if (!vis[j]&&dis[j]>p[v][j]) pre[j]=v,dis[j]=p[v][j]; } } return ans; } int sprim(int x){ int ans=inf; ;i<=n;++i) ;j<=n;++j) if (!u[i][j]&&p[i][j]!=inf) ans=min(ans,x+p[i][j]-mx[i][j]); ; return ans; } int main(){ freopen ("2.in","r",stdin); freopen ("2.out","w",stdout); int T; scanf ("%d",&T); while (T--){ memset(vis,,sizeof(vis)); memset(u,,sizeof(u)); memset(mx,,sizeof(mx)); scanf ("%d%d",&n,&m); ;i<=n;++i) ;j<=n;++j){ ; else p[i][j]=inf; } ;i<=m;++i){ int x,y,z; scanf ("%d%d%d",&x,&y,&z); p[x][y]=z,p[y][x]=z; } int ans=prim(); ){ printf("Not Unique!\n"); } else{ //printf("%d\n", sprim(ans)); if (ans==sprim(ans)) printf("Not Unique!\n"); else printf("%d\n",ans); } } ; }
3.CJOJ p2403 次小生成树
题意就是求严格的次小生成树 本来太懒准备直接按上一道题的方法写的结果看了看数据范围就瞬间怂了
想了一会儿 区别应该是这一次替换的必须是比尝试用于替换的这一条边小的边中最大的 因而那种预处理max的方式就挂掉了
思考40分钟 无果 开始蒟蒻的标准程式 看题解qaq
然后看到lca的那一刻觉得自己被掏空
打了两种方法 一种是乖乖的倍增 另一种是直接暴力一级一级跳
结果倍增比直接暴力要慢???不过没有慢很多 可能是我倍增打丑了或者是数据问题?
T了三四遍 最后发现自己忘了并查集路径压缩 我可能真的是要笨死了qaq(不是都说了不路径压缩的女孩子不可爱嘛还忘
另外妄想症真好听 给dela大哥哥跪orz
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<string> #define ll long long #define maxm 300010 #define maxn 100010 using namespace std; struct hh{ int x,y; ll z; }q[maxm]; struct edge{ ll d; int nxt,t; }b[*maxm]; ,lo; int fa[maxm],head[maxn],dep[maxn],f[maxn]; ll dis[maxn]; bool u[maxm]; bool cmp(hh a,hh b){ return a.z<b.z; } int find(int x){ return x==fa[x]?x:fa[x]=find(fa[x]);//以后再忘压路径就是狗qwq } void link(int x,int y,int z){ b[++tot].nxt=head[x]; b[tot].d=z; b[tot].t=y; head[x]=tot; } void dfs(int x,int ff){ f[x]=ff; for (int i=head[x];i;i=b[i].nxt){ if (b[i].t==ff) continue; dep[b[i].t]=dep[x]+; dis[b[i].t]=dis[x]+b[i].d; dfs(b[i].t,x); } } int lca(int x,int y){//强行暴力lca if (dep[y]>dep[x]) swap(x,y); while (dep[x]!=dep[y]) x=f[x]; while(x!=y) x=f[x],y=f[y]; return x; } ll mm(int x,int y,ll z){//min中的max int an=lca(x,y); ll ans=; while (x!=an){ if (dis[x]-dis[f[x]]<z) ans=max(ans,dis[x]-dis[f[x]]); x=f[x]; } while (y!=an){ if (dis[y]-dis[f[y]]<z) ans=max(ans,dis[y]-dis[f[y]]); y=f[y]; } return ans; } int main(){ freopen ("3.in","r",stdin); freopen ("3.out","w",stdout); scanf ("%d%d",&n,&m); ;i<=m;++i) scanf ("%d%d%lld",&q[i].x,&q[i].y,&q[i].z); sort(q+,q+m+,cmp); ;i<=n;++i) fa[i]=i; ; ll sum=; ;i<=m;++i){ int xx=find(q[i].x),yy=find(q[i].y); if (xx!=yy){ fa[xx]=yy; link(q[i].x,q[i].y,q[i].z); link(q[i].y,q[i].x,q[i].z); u[i]=,sum+=q[i].z; ++l; ) break; } }//kruskal dfs(,); ll ans=; ;i<=m;++i){ if (u[i]) continue; ll t=mm(q[i].x,q[i].y,q[i].z); ans=min(ans,sum-t+q[i].z);//次小 } printf("%lld\n",ans); ; }
MST系列的更多相关文章
- 【函数】Oracle函数系列(2)--数学函数及日期函数
[函数]Oracle函数系列(2)--数学函数及日期函数 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...
- 【转】并查集&MST题集
转自:http://blog.csdn.net/shahdza/article/details/7779230 [HDU]1213 How Many Tables 基础并查集★1272 小希的迷宫 基 ...
- HDU 畅通工程系列
畅通工程系列都是比较裸的最小生成树问题,且是中文题目,不赘述了. 1.HDU 1863 畅通工程 题意:一个省有很多村庄,其中一些之间是可以建公路的,每条公路都需要不同的代价,问代价最小的情况下将所有 ...
- Wix打包系列 (六)制作升级和补丁包
原文:Wix打包系列 (六)制作升级和补丁包 前面我们已经知道怎么制作一个完整安装包了,但我们的软件往往不能一次性就满足客户的需要,当客户需要我们给软件进行升级的时候,我们应该怎么做呢? 在这之前,我 ...
- HDU4522 湫湫系列故事——过年回家
传送门:点我 中文题面. 思路:拿spfa对卧铺和硬铺分别跑spfa,然后找两个的最短路.体感堆优化的dij也可以,不过spfa跑跑就过去了.有个细节是最后得用long long 存数据,其他的没啥. ...
- Intel 5 6 7 8系列芯片组介绍
Intel 5 6 7 8系列芯片组介绍 Iknow.2015-11-05 22:40|知识编号:122257 操作步骤: [Inetl 5.6.7.8系列芯片组介绍] 芯片组是主板电路的核心.一定意 ...
- Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。
通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneI ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
随机推荐
- 二维,多维数组排序array_multisort()函数的使用
对于数组的排序,很很多方法:随便百度了一下 sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组进行排序 ksort() - 根据键, ...
- SQL测试题
一.网上收集了一些测试题,对于掌握SQL查询语句. /* Navicat MySQL Data Transfer Source Server : lizebo's MYSQL Source Serve ...
- 欢迎大家关注我的微信公众号(nangongkuo)
欢迎大家关注我的微信公众号,在这个公众号里面我会给大家分享我学习过程中分享给大家的一些技术性的东西,和一些生活经验的总结分享.
- c# 初识WPF
WPF,全名是Windows Presentation Foundation,是微软在.net3.0 WinFX中提出的.WPF是对Direct3D的托管封装,它的图形表现依赖于显卡.当然,作为一种更 ...
- ArcGIS jsAPI (4.x)本地部署字体符号乱码
在下载了新版arcigs 的 JS API 后,每次部署在IIS中都会出现部件字体乱码的问题,需配置响应标头和添加文件映射 一. HTTP响应标头配置 在 IIS 中的 HTTP响应标头 中加入以下配 ...
- PHP开发b2c商城价格
电商的快速发展不断地挤压传统企业的生存空间,渠道越来越窄,所以现在很多企业开始往线上发展,搭建自己的B2C商城,直接面向消费者进行销售.那开发b2c商城价格怎么样?很多企业都是比较关心到商城价格这个问 ...
- Markdown语法入门
本文内容参考与这里,本篇文档,用Markdown语法写成. 概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以 ...
- 酷狗歌曲缓存kgtemp转mp3工具
一直用网易音乐听歌,不过网易的歌曲版权确实是少了一些,在酷狗上可以找到,但收费歌曲只能试听不能下载. 寻找方案 从设置里可以看出,酷狗会设置缓存目录,试听的歌曲存放到这个缓存里. 打开缓存目录: 可以 ...
- 更便捷的css处理方式-postcss
更便捷的css处理方式-PostCSS 一般来说介绍一个东西都是要从是什么,怎么用的顺序来讲.我感觉这样很容易让大家失去兴趣,先看一下postcss能做点什么,有兴趣的话再往下看,否则可能没有耐心看下 ...
- HDU3507 Print Article (斜率优化DP基础复习)
pid=3507">传送门 大意:打印一篇文章,连续打印一堆字的花费是这一堆的和的平方加上一个常数M. 首先我们写出状态转移方程 :f[i]=f[j]+(sum[i]−sum[j])2 ...