
总结
文章平均质量分 72
一只蒟蒻
这个作者很懒,什么都没留下…
展开
-
算法与数据结构八日谈之五——数学相关
1.模算术欧几里得算法求最大公约数int gcd(int a,int b){return b==0 ? a: gcd(b,a%b);}扩展欧几里得算法求乘法逆元也可利用费马小定理和快速幂直接求出乘法逆元快速乘法在模数大于int范围时直接乘可能会溢出,可以用基于二分的加法来代替乘法快速幂模线性方程组中国剩余定理,实现方法与拉格朗日插值法类似离散对数BSGS算法Lucas定理2.矩阵及其运算矩阵乘法的应原创 2015-07-05 17:45:08 · 903 阅读 · 0 评论 -
算法与数据结构八日谈之四——树论
1.树的定义父节点、子节点、子树、祖先、后代、兄弟、根节点、叶节点、路径等2.生成树生成树的计数Matrix-Tree定理最小(大)生成树-Prim算法 -Kruskal算法 部分维护动态图的题目可通过离线处理转化为维护最小生成树3.树的重心定义(性质)1:到树上所有点的距离和最小的点定义(性质)2:割掉该点后最大的子树大小最小的点-可通过递归处理树的重心来完成动态树分治 加权重心与平权重心求原创 2015-07-04 17:50:52 · 1447 阅读 · 0 评论 -
算法与数据结构八日谈之三——字符串
1.字符串hash利用字符串hash可以方便而高效的解决一些匹配问题 很难写错,容易调试 在空间/时间常数允许的情况下尽量使用双关键字哈希(难卡)2.KMP算法在线性时间内解决字符串匹配问题,代码短,但容易写错 利用fail数组保存已经匹配获得的信息从而优化匹配的时间复杂度3.manacher算法在线性时间内求出以每个位置为中心的最长回文长度 原理是在每两个字符间加入不属于原字符集的字符,统原创 2015-07-02 11:28:09 · 602 阅读 · 0 评论 -
算法与数据结构八日谈之二——动态规划
1.背包问题01背包问题转移方程为f[i,j]=\max(f[i-1,j-w_i]+v_i,f[i-1,j])f[i,j]=max(f[i−1,j−wi]+vi,f[i−1,j])f[i,j]=\max(f[i-1,j-w_i]+v_i,f[i-1,j]) 转移条件为j\geq w_jj≥wjj\geq w_j 这是最裸的动态规划问题之一,从这个问题可以扩展出很多新问题来 可以用滚动数组将空间原创 2015-07-02 07:48:26 · 761 阅读 · 0 评论 -
算法与数据结构八日谈之一——图论算法
1.图的遍历图的bfs-需要用到队列来保存节点信息图的dfs-递归版dfs可能爆栈,尽量使用手写栈或手动扩大栈容量2.图的联通性并查集维护不存在删边操作的动态图连通性-在部分存在删边操作的情况下可以离线处理变成倒序加边Tarjan算法求出无向图的割点和有向图的强连通分量-利用时间戳的和dfs树的特性在O(n)O(n)时间求出3.最短路问题队列优化的Bellman-Ford算法-代码简洁,可以处理负权原创 2015-07-01 14:30:01 · 849 阅读 · 0 评论