ACM暑假集训第三周小结
这一周学的图论,学了这么些
两种存图的方法:邻接矩阵( map[n][n] ) , 邻接表( headlis[n] , vector<int> G[n] )
存图的方法,各有各的好,我的理解是,如果不是那种非常稠密的图,类似于完全图这样的图,邻接表一般会快很多,毕竟减少了边的遍历。
最小生成树 kruskal
这个算法现在感觉是到的用处是,求将所有点连通起来,并且边的权值之和最小的一种算法,
首先,将边按边的权值升序排序,每次选取最小的边,如果没有连通,就连通起来,并记录权值,用一个并查集确定两点是否连通,
并查集确定是否连通很容易实现,并查集的压缩路径也很简单。这个算法感觉有点贪心的意思。
最短路径 dijkstra , bellman-ford ,floyd ,spfa
dijkstra
适用于边权为正的情况,有向图,无向图都适用
这个算法就是走一步看一步的意思,选最短的路径走一步,然后去看去所有点是否能经过这个点能更短路径。
d[]这个数组的意思一定要确立好,例如找最短路径就是记录到这个点最短的距离,最短时间就是存到某个点的最短时间
先初始化,d[n]都设为 inf , vis[] 都设为0 , 然后起点s,d[s]=0,遍历 n 次,每次找到最小的距离去没经过的点,然后标记走到了,然后去更新这个点到其余没到过的点是否能缩短
路径,这样,标记 n 次,也就是说所有点都走到了咯,能更新的都更新完了。
优化方法:用邻接表存,可以减少遍历,然后 d[] 换成一个优先队列,小的先出队,这样就代替了循环 n 次找最小的权值了,
bellman-ford
能做有负权的
算法我用的比较少,不是十分理解,欢迎指正。
我的理解是循环 n-1 次, 每次检查每条边,如果起点可以到,去松弛这条边连的两个点,不知道为什么需要 n-1 次能松弛完。。。
floyd
感觉这个更暴力,直接三重循环遍历点数 n ,k 循环 n 次,就是看经过 k 这个点是否能够缩短权值,能就缩短
使用先估计会不会超时吧。初始化就是除了读入边之外,将 d[i][i]=0
spfa
网上看的一个算法,一般比 dijkstra 要慢一点
我最喜欢的,感觉像是bellman-ford 的优化,又感觉有点bfs的意思,很有趣
就是从起点开始走,遍历这个点能去的所有边,然后看能不能优化,能优化,就去试探被优化的那个点的所有边,看鞥不能继续优化,如此深入
直到不能优化了,就会退出,然后就是一个完全优化的数组 d[] 在你的面前,哈哈哈
网络流初步 增广路算法
看那本《算法竞赛-入门经典》写的很简洁,看了很久没看懂,百度一下,so easy ,哈哈,一下子看懂了最大流问题,估计最近没时间看后面的了
以后写总结
ACM暑假集训第三周小结的更多相关文章
- DP(Dynamic programming)——尽力学习之中(2016 HUAS ACM 暑假集训-5)
这周不打算按照以往的方式更新博客,而是采用整体的方式.一是因为学的太少,没东西写:二是这篇博客会经常更新的.如题,DP——尽力学习之中. ------------------------------- ...
- 暑假集训第六周contest1
51Nod - 1413 权势二进制 题意:就是讲给出一个数n,让你求最少由多少个像0,1,10,11......这样的二进制数相加构成:样例n=9就是由9个二进制1相加组成,我不懂比赛的时候我为什么 ...
- 2016huasacm暑假集训训练三 G - 还是畅通工程
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/G 这题和上一道题差不多,还更简单点,直接用prim算法就行,直接贴AC代码: im ...
- 2016huasacm暑假集训训练三 F - Jungle Roads
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/F 题意:在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使 ...
- 2016huasacm暑假集训训练三 D - Invitation Cards
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/D 题意:一张个向图,求从点1开始到其他各点的最短路权值和加上从其他各点到点1的最短 ...
- 2016huasacm暑假集训训练三 C - Til the Cows Come Home
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/C N题目大意是有n个点,然后给出从a点到b点的距离,a和b是互相可以抵达的,则是无 ...
- 2016huasacm暑假集训训练三 B-Frogger
题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/B 题意:一只青蛙在湖中一颗石头上, 它想去有另一只青蛙的石头上,但是 湖里的水很脏 ...
- 实验报告(一)&第三周总结
Java实验报告 实验一 Java开发环境与简单Java程序 一. 实验目的 (1) 熟悉JDK开发环境 (2) 熟练掌握结构化程序设计方法 二. 实验内容 1. 打印输 ...
- STL 入门 (17 暑假集训第一周)
快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...
随机推荐
- Java算法题:求素数
题目:判断101-200之间有多少个素数,并输出所有素数. 思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 具体代码: public Ve ...
- 用js怎么控制submit提交表单
需求: 1. 要在点击submit按钮的时候,弹出一个询问框,"你确定要修改?".如果按了"确定"那么就提交表单,否则就保留在原页面,既不提交不跳转. 2. 要 ...
- 面试——谈谈对JAVA的理解
谈谈你对Java平台的理解.答:Java首先是一种面向对象的语言,语言特性有封装,继承,多态,泛型,Lamda表达式等; 第二个特性:支持跨平台,一次书写导出运行(write once,run any ...
- asp.net使用母版页以及Jquery和prototype要注意的问题
在母版页中引用了js,css或者其他外部文件之后,子页面就不必再重新引用,否则可能出错 prototype.js和jquery.js冲突的解决方案: <script type="tex ...
- 2017.6.27 jdbc基本使用
参考来自:http://www.runoob.com/w3cnote/jdbc-use-guide.html 1.jdbc的执行流程 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系 ...
- Oracle11g登陆sqlplus时一直提示密码错误
我安装oracle的时候有自己设置帐号和密码,我也在服务里的oracleserver中查看了正在运行的用户名,是我注册时填的那个并已开启.但是为什么登陆Sqlplus老是说密码错误呢?我敢肯定密码没有 ...
- 在多线程的情况下是由Iterator遍历修改集合对象,报ConcurrentModificationException()异常的根因分析
遍历List时抛ConcurrentModificationException异常原理分析 http://www.blogjava.net/houlinyan/archive/2008/04/ ...
- Session和Cookie之间存在的区别与联系
一. 概念理解 你可能有留意到当你浏览网页时,会有一些推送消息,大多数是你最近留意过的同类东西,比如你想买桌子,上淘宝搜了一下,结果连着几天会有各种各样的桌子的链接.这是因为 你浏览某个网页的时候,W ...
- java swing内嵌浏览器,隐藏滚动条
1 通过定义css样式表来解决 1 html{overflow-y:scoll;overflow:-moz-scrollbars-vertical;} 2 body{width:680px;heigh ...
- Android_Fragment_Fragment详解
Android_Fragment_Fragment详解 分类: Android基础2013-10-03 08:23 92人阅读 评论(0) 收藏 举报 AndroidFragmentFragmen ...