- 博客(8)
- 收藏
- 关注
原创 数论在acm竞赛中的应用1
关键词:欧几里得,扩展欧几里得,乘法逆元,同余膜,质数,二分快速幂,矩阵,待续一,算法介绍 1)欧几里得Gcd(a,b)=Gcd(b,a%b)注解:递归,循环也行,a=Gcd(a,0)
2017-10-27 21:53:42
395
原创 二分匹配之匈牙利算法
二分匹配之匈牙利算法一、概念二分图:把点分为两个集合,在同一个集合的点之间不能有边,也就是说边只能存在于分别来自两个集合的点间,这样的图就是二分图。 最大二分匹配:在原二分图上通过删除一些边,来保证每个点只能与一个点相连(一一对应),能保留最多的边数,这个边数就是最大二分匹配二、算法步骤1)初始化,存图。2)选定其中一个集合,依次对集合中的每个点dfs搜索增广路,成功搜
2017-10-01 15:03:15
240
原创 字符串匹配-扩展KMP
字符串匹配-扩展KMP一、说明。如字符串cabcab后缀:b,ab,cab,bcab,abcab,cabcab前缀:c,ca,cab,cabc,cabca,cabcab扩展kmp:可求字符串T的(所有)后缀与字符串S的最长公共前缀二、next数组(重点) 这里把T和S当做同一个字符串。 Next[i]表示从字符i开始的后缀与字符串的最长公共前缀数 如
2017-09-28 21:06:22
322
原创 高效求最短路SPFA算法(C语言)
看这个之前建议理解了Bellman-Ford算法,因为本算法可以看做是对其的优化。优化一、改用邻接表存图。邻接表的使用,即一个点配一个链表。优化二、用列表来存储松弛边缘(Bellman-Ford算法过程可以看作一个图,从其中的一个起点开始松弛,一层一层松弛下去,直到遍布全图),不再需要每次遍历全图。其它好像没变,还是用d[i]来表示i点距源点最短距离。多了一个标志数组(防止
2017-09-26 18:50:24
1610
原创 C语言实现大型非负整数加减乘除
大型非负整数加法、乘法Long long能存储的数长度最大仅为20位,当数据超过了,便不能再进行普通的计算。一、加法把超长的数据看成字符串,以字符数组来存储,第一个字符即该数据的最高位。对两个数组从最低位开始逐位相加,相加的结果对10取余,即计算结果在该位的数字,考虑到可能有进位,把相加的结果除10(小数部分会被抛弃),加入到下一轮更高位的计算。//s=s1+s2
2017-09-19 20:26:58
2265
原创 由poj 1125,poj 1062解析最短路径
由poj 1125,poj 1062解析最短路径一、poj 1125(有向图,未定义起始点和终点)题意:给出一个图,点表示人,边表示消息从这个人传到另一个人所花的时间,你的任务是求把消息告诉里面的哪一个人(假设你只能告诉一个人),能让消息遍布整个网络所花的最少时间,并求最少时间。//这个题目题意比题解难。。。。题解:首先从n个人中选择一个人,把消息告诉他,然后用
2017-09-17 20:16:25
275
原创 求最短路径的三种基本算法
最短路径 //代码请翻挑战程序设计一、Bellman-Ford算法从原点一层一层扩展更新(像从a能直接到b,则看作b是a的下一层),直到再次遍历所有边时不再有更新,则所有点距原点的最小值确定。1、用在:在无负圈的单向图求两点最短路径。2、模板:d[n]:n个点距原点最短路径,初始化INF。(更新对象,下同) Struct e
2017-09-10 19:10:40
2038
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人