这一周学的图论,学了这么些

两种存图的方法:邻接矩阵( 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暑假集训第三周小结的更多相关文章

  1. DP(Dynamic programming)——尽力学习之中(2016 HUAS ACM 暑假集训-5)

    这周不打算按照以往的方式更新博客,而是采用整体的方式.一是因为学的太少,没东西写:二是这篇博客会经常更新的.如题,DP——尽力学习之中. ------------------------------- ...

  2. 暑假集训第六周contest1

    51Nod - 1413 权势二进制 题意:就是讲给出一个数n,让你求最少由多少个像0,1,10,11......这样的二进制数相加构成:样例n=9就是由9个二进制1相加组成,我不懂比赛的时候我为什么 ...

  3. 2016huasacm暑假集训训练三 G - 还是畅通工程

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/G 这题和上一道题差不多,还更简单点,直接用prim算法就行,直接贴AC代码: im ...

  4. 2016huasacm暑假集训训练三 F - Jungle Roads

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/F 题意:在相通n个岛屿的所有桥都坏了,要重修,重修每一个桥所用的时间不同,求重修使 ...

  5. 2016huasacm暑假集训训练三 D - Invitation Cards

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/D 题意:一张个向图,求从点1开始到其他各点的最短路权值和加上从其他各点到点1的最短 ...

  6. 2016huasacm暑假集训训练三 C - Til the Cows Come Home

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/C N题目大意是有n个点,然后给出从a点到b点的距离,a和b是互相可以抵达的,则是无 ...

  7. 2016huasacm暑假集训训练三 B-Frogger

    题目链接:http://acm.hust.edu.cn/vjudge/contest/123674#problem/B 题意:一只青蛙在湖中一颗石头上, 它想去有另一只青蛙的石头上,但是 湖里的水很脏 ...

  8. 实验报告(一)&第三周总结

    Java实验报告 实验一 Java开发环境与简单Java程序 一. 实验目的 (1)      熟悉JDK开发环境 (2)      熟练掌握结构化程序设计方法 二. 实验内容 1.      打印输 ...

  9. STL 入门 (17 暑假集训第一周)

    快速全排列的函数 头文件<algorithm> next_permutation(a,a+n) ---------------------------------------------- ...

随机推荐

  1. 矩阵压缩写法 scipy spark.ml.linalg里都有,CRS,CCS

    CRS 表示:Compressed Row Storage CCS 表示:Compressed Column Storage CRS的表示参考: https://blog.csdn.net/buptf ...

  2. ArcGIS Viewer for Flex中引入google map作底图 (转)

    在ArcGIS Viewer for Flex开发中,经常需要用到google map作为底图,我们不能通过ArcGIS Viewer for Flex - Application Builder轻易 ...

  3. ElasticSearch 监控单个节点详解

    1.介绍 集群健康 就像是光谱的一端——对集群的所有信息进行高度概述. 而 节点统计值 API 则是在另一端.它提供一个让人眼花缭乱的统计数据的数组,包含集群的每一个节点统计值. 节点统计值 提供的统 ...

  4. flume学习(四):Flume Interceptors的使用

    转载:http://blog.csdn.net/xiao_jun_0820/article/details/38111305 对于flume拦截器,我的理解是:在app(应用程序日志)和 source ...

  5. Android Activity之间经典切换动画

    package com.iteye.androidtoast; import java.util.ArrayList; import java.util.List; import android.ap ...

  6. mysql开发之---使用游标双层嵌套对总表进行拆分为帖子表和回复表

    注意点: (1)进行拆分的总表表名是不同的.所以创建暂时表,把总表的数据先插入暂时表 (2)为了避免最外层游标轮询数据结束时,抛出 not found 退出程序,不会运行关闭游标等兴许操作,定义con ...

  7. poj1062昂贵的聘礼

    这个题目我最開始看题目看了半天,看不懂.. 可是通过看例子及答案最终看懂了. .. 首先先解决等级的关系. .假设等级越界.则不能交换..所以原本等级的界限是 [rank[1]-m,rank[1]+m ...

  8. 杭电 HDU 2717 Catch That Cow

    Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. 【Excle】科学计数法快速还原

    在Excle的单元格中,如果输入大于11位的数字,结果就会以E+形式显示 如果是单个输入的话,只需要把Excle中的单元格格式设置为文本即可,然后输入就不会出现科学计数法,但是有时候是从外部导入的序号 ...

  10. java代理ip有效检测

    java实现代理ip有效检测,依赖Apache的HttpClient   正式版:       /**        * 批量代理IP有效检测        *        * @param pro ...