算法讲解
算法
qianguch
这个作者很懒,什么都没留下…
展开
-
组合数的求法及逆元
码一下网上两篇文章: 传送门: 1、OI中组合数的若干求法与CRT 2、逆元原创 2020-07-18 09:17:37 · 276 阅读 · 0 评论 -
拓扑排序
拓扑排序的理解: 拓扑排序的定义:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。(from:百度百科)。 首先理解排序的规则:即若存在一条有向边从u到v,则在排序后的顺序里u在v的前面。并且每个点在这个拓扑序里只能出现一次。考虑为什么必原创 2017-08-19 14:59:31 · 1016 阅读 · 0 评论 -
Manacher算法
网上看到一个很不错的,所以自己就不写了。 链接:https://segmentfault.com/a/1190000003914228 但它的文章有一个小问题:第四幅图蓝线应该是划分在红格的左边。 附例题: Palindrome (POJ 3974) 题目大意: 给定一个长为 n 的字符串,求它的最长回文子串。数据组数不超过30. n <= 10^6 分析: Manacher模板题原创 2017-07-02 14:24:05 · 319 阅读 · 0 评论 -
树的直径求法及证明
定义: 一棵树的直径就是这棵树上存在的最长路径。 求法: 两次dfs或bfs。第一次任意选一个点进行dfs(bfs)找到离它最远的点,此点就是最长路的一个端点,再以此点进行dfs(bfs),找到离它最远的点,此点就是最长路的另一个端点,于是就找到了树的直径。 证明: 假设此树的最长路径是从s到t,我们选择的点为u。反证法:假设搜到的点是v。 1、v在这条最长路径上,那么dis[u,v]>原创 2017-10-12 16:51:05 · 6647 阅读 · 0 评论 -
Tarjan算法
## **Tarjan算法** ## Tarjan算法是一种求图的强连通分量的一种算法。首先我们介绍一些基本知识。原创 2017-01-24 20:51:52 · 4169 阅读 · 0 评论 -
凸包的解法
前言:首先,什么是凸包? 假设平面上有p0~p12共13个点,过某些点作一个多边形,使这个多边形能把所有点都“包”起来。当这个多边形是凸多边形的时候,我们就叫它“凸包”。如下图: 然后,什么是凸包问题? 我们把这些点放在二维坐标系里面,那么每个点都能用 (x,y) 来表示。 现给出点的数目13,和各个点的坐标。求构成凸包的点? 解一:穷举法(蛮力法)时间复杂度:O(n³)。 思路:两点确转载 2017-05-28 16:23:07 · 555 阅读 · 0 评论 -
二分查找总结
二分是一个很基础的算法,但是我到现在每次用时,对于边界都还有一些不确定。于是做一个总结,希望自己不再迷糊。 整理内容借鉴了网上搜到的一篇不错的博文,但是代码什么的还是我自己写的。不过本着尊重博主的原则,我还是放一下链接:http://www.cnblogs.com/luoxn28/p/5767571.html(我的和他的还是不同的···) 我们假设一个最简单的环境,对于数x,按要求询问它在一个原创 2017-08-20 16:36:27 · 648 阅读 · 0 评论