OAO dijkstra算法在复杂度方面是十分优秀的,但是其最大弊端就是无法处理带负权的图 (因为是基于已经被更新过的距离源点的边必然已经达到了最短路的这个事实 来采取贪心策略来求得最短路 而有负权路存在时,这个基础不在成立。) 这个时候就要请出Bellman-Ford算法了 (正确性证明:http ...
分类:
编程语言 时间:
2020-04-14 20:30:25
阅读次数:
61
设有n个人依围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列, …,如此反复到所有的人全部出列为止。设n个人的编号分别为 1, 2, …, n,打印出 利用余数 利用m-1这一关键数字 1 public static void main(String[ ...
分类:
编程语言 时间:
2020-04-13 22:38:07
阅读次数:
77
解决一个回溯问题,实际上就是一个决策树的遍历过程。思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的选择。 3、结束条件:也就是到达决策树底层,无法再做选择的条件。 回溯算法的框架: result = [] def backtrack(路径, 选择列表): if ...
分类:
编程语言 时间:
2020-04-12 20:16:19
阅读次数:
74
1 # -*- coding=utf-8 -*- 2 # software: 算法学习 3 # datetime:2020/4/9 9:14 上午 4 5 6 class Node(object): 7 """ 8 链表的节点对象:包含数据与和指针域 9 """ 10 11 def __init__ ...
分类:
其他好文 时间:
2020-04-10 10:28:23
阅读次数:
62
数据结构和算法 CMDB项目 ( ) 数据分析 数据结构和算法 ( ) 数据结构和算法地位: 操作系统 计算机组成原理 网络系统 软件工程 数据结构和算法 (考研必考) 数据结构和算法是计算结科学领域非常核心的一门课程。 程序 = 数据结构 + 算法 学习时长 算法 排序算法 冒泡排序 ( ) 选择 ...
分类:
编程语言 时间:
2020-04-09 00:53:12
阅读次数:
102
KMP算法学习 KMP中用到的函数详解 1. prefix_table() 2. move_prefix_table() 3. kmp_search() ...
分类:
编程语言 时间:
2020-04-08 22:46:51
阅读次数:
76
多项式 一个$n$次多项式可以表示为$A(x)=\sum_{i=0}^{n}a_i x^i$,另一个$n$次多项式可以表示为$B(x)=\sum_{i=0}^{n}b_i x^i$。 多项式加法 将$A(x)$和$B(x)$相加,得到多项式$C(x)=\sum_{i=0}^{n} (a_i+b_i) ...
分类:
编程语言 时间:
2020-04-08 00:00:41
阅读次数:
90
哈希函数要做的事情是给一个任意大小的数据生成出一个固定长度的数据,作为它的映射。所谓映射就是一一对应。一个可靠的哈希算法要满足三点。 第一是安全,给定数据 M 容易算出哈希值 X ,而给定 X 不能算出 M ,或者说哈希算法应该是一个单向算法。 第二是独一无二,两个不同的数据,要拥有不相同的哈希。 ...
分类:
编程语言 时间:
2020-04-06 17:35:06
阅读次数:
96
简介 长链剖分是跟 dsu on tree 类似的小$trick$,可以资瓷 维护子树中只与深度有关的信息 。 并能达到 线性 的时间复杂度。 算法流程 对于每个点,记录 重儿子 $heavy[u]$表示深度最大的儿子,其余作为 轻儿子 。 这样我们可以得到若干条 互不相交 的长链。 在维护信息的过 ...
分类:
编程语言 时间:
2020-03-28 23:34:00
阅读次数:
93
以蓝书为学习参考,进行的栈的学习 例题1: 实现一个栈,支持Push,Pop和GetMin(查询栈中最小的值)在O(1)完成 算法实现思路:建立两个栈,A存原本的数据,B存以栈底开头的每段数据的最小值 Push(X),在A中插入X,在B中插入min(B的栈顶数据,X)。执行GetMin只需要输出B. ...
分类:
编程语言 时间:
2020-03-25 23:00:17
阅读次数:
83