![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法相关
文章平均质量分 68
IT路上的苦行僧
这个作者很懒,什么都没留下…
展开
-
游泳圈的怪胎--最大子矩阵和
游泳圈的最大子矩阵和 Description二维数组首尾相连,上下也相连,像个游泳圈或轮胎,又如何求最大子矩阵和?如游泳圈展开成3行3列的二维矩阵:-18 10 71 -20 21 38 -2那么最大的子矩阵和为:10+7+38-2=532 10 71 -20 21 38 -2那么最大的子矩阵和为:10+7+2+38-2+1=56转载 2013-05-16 09:21:18 · 1431 阅读 · 0 评论 -
稀疏图上的Johnson算法
转载于 http://blog.csdn.net/zhanghaodx082/article/details/8868977这个算法融合了Bellman-Ford算法和Dijkstra算法,并且Dijkstra算法本身还使用了优先级数组(可用二项堆或斐波那契堆实现,这里用的是二项堆实现),性能比较好,达到了O(V2lgV+VE)的时间复杂度,在无负权回路图中是最快的,比较有代表性,因此把我参考转载 2013-05-30 09:25:43 · 658 阅读 · 0 评论 -
二分查找需要注意的问题,以及在数据库内核中的实现
转于http://blog.csdn.net/overstack/article/details/8812159问题背景 今年的实习生招聘考试,我出了一道二分查找(Binary Search)的题目。题目大意如下: 给定一个升序排列的自然数数组,数组中包含重复数字,例如:[1,2,2,3,4,4,4,5,6,7,7]。问题:给定任意自然数,对数组进行二分查找转载 2013-05-29 15:48:53 · 1581 阅读 · 0 评论 -
计算多边形面积
计算多边形面积三角形的面积1、在解析几何里, △ABC的面积可以通过如下方法求得: 点坐标 => 边长 => 海伦公式 => 面积 海伦公式: S=sqrt[p(p-a)(p-b)(p-c)],其中p=(a+b+c)/2(p为三角形的半周长)2、 计算几何的方法 △ABC的面积就是“向量AB”和“向量AC”两个向原创 2013-06-02 19:46:30 · 1014 阅读 · 0 评论 -
验证多边形是否为凸多边形
验证多边形是否为凸多边形 2108 Shape of HDU#include #define _DEBUG 0int crossMulti(int x0,int y0,int x1,int y1,int x2,int y2){//差积 return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);}int main(){ int n,i;原创 2013-06-02 19:55:52 · 716 阅读 · 0 评论 -
HDU1466 计算直线的交点数
1、n条直线互不平行且无三线共点的最多交点数max=1+2+……(n-1)=n(n-1)/22、一般统计的方法: 假设一共有n=a+b条直线 即n条直线分成2组,分别为a条和b条),则 总的交点数= a内的交点数 +b内的交点数 +a,b之间的交点数 3、我们来分析加入第N条直线的情况(这里以N=4为例):(分类方法:和第N条直线平行的在a组,其余在b组)原创 2013-06-08 19:53:25 · 528 阅读 · 0 评论 -
HDU2150 Pipe
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2150判断线段是否相交的经典题目#include #include #include #define _DEBUG 0#define MAXN 30#define MAXK 100#define MAX(X,Y) (X)>(Y)?(X):(Y)#define MIN(原创 2013-07-09 13:55:57 · 717 阅读 · 0 评论 -
最大流算法小结
转载于 http://www.cppblog.com/guyuecanhui/articles/88393.html 最近在看网络流,把几个常用的算法总结下,正确性的证明和一些理论的东西就不写了,参看算法导论和神牛们的论文,我只写算法的理解和实现模板。Ford-Fulkerson方法 每次找增广路,把这条路上的所有点的流量加上这条路上的残余容量,再找新的增广路,直到找转载 2013-05-12 10:02:10 · 722 阅读 · 0 评论 -
二分图最大匹配总结
二分图匹配(匈牙利算法)匈牙利算法的理解转自 http://hi.baidu.com/blazar/item/7f120061e3b8572768105b3d 设想一个公司里有A, B, C三种工具, 有员工1, 2, 3, 4号. 这四位员工分别能操作的机型为情况为: 1: A, B 2: A, C 3: A 若想充分发挥所有人和所转载 2013-05-12 10:09:34 · 662 阅读 · 0 评论 -
旋转卡壳初步
转载于 http://www.cnblogs.com/Booble/archive/2011/04/03/2004865.html一.简单枚举算法的不足上一次介绍了一个基本的求平面最远点对的算法即先求点集的凸包 然后枚举凸包上的点来求最远点集这是利用了凸包上的点相比 点集中的点 一般是很少的 平均情况很好 并且我们也能AC这个问题但是这是有局限性的 当凸包上的点达到O(N)的级转载 2013-06-03 11:31:37 · 722 阅读 · 0 评论 -
快速寻找满足条件的两个数(编程之美)
快速找出一个数组中的两个数,让此两个数之和等于一个给定的数。如:5 6 1 4 7 9 8 中找出两个数之和等于10的数编程之美之美P177有详细解答过程,思路是先排序(O(nlog(n)),然后保存两个指针beg、end,初始指向头部和尾部,如过*beg+*end==sum,则返回;如果*beg+*end>sum则向前移动end;*beg+*end扩展问题:1、快速找出一个数组中原创 2013-08-19 00:23:08 · 818 阅读 · 0 评论 -
最新的一个面试的算法题目——一个完全背包问题
一个集合x有都不相同的n个元素,使用这个集合中的不定个数的元素,组成一个和为s的序列,求出所有符合的序列,元素可以重复使用,只要元素的个数相同不考虑顺序。比如集合是x={2,3,4,5,7}; n=5, s=12可以得出以下的序列:2 2 2 2 2 22 2 2 3 33 3 3 32 2 2 2 42 3 3 42 2 4 44 4 42 2 3 5原创 2013-08-20 17:29:40 · 749 阅读 · 0 评论 -
Riding the Fences (USACO 3.3) 无向图欧拉通路/回路
Riding the FencesFarmer John owns a large number of fences that must be repaired annually. He traverses the fences by riding a horse along each and every one of them (and nowhere else) and fixing原创 2013-08-24 12:29:38 · 759 阅读 · 0 评论 -
矩阵链乘法 算法导论
[1003] 矩阵链乘法(http://ac.nbutoj.com/Problem/view.xhtml?id=1003)时间限制: 1000 ms 内存限制: 65535 K问题描述给定一个有n个矩阵的矩阵链A1A2A3…An,其中矩阵Ai(i=1,2,3…n)的维度为pi-1*pi。我们知道,两个维度分别为m*r和r*n的矩阵用一般的矩阵乘法相乘,所需的运算次数为m*r原创 2013-09-30 13:32:51 · 580 阅读 · 0 评论 -
最大上升(下降)子序列 小节
1、Given a sequence of as many as 10,000 integers (0 < integer < 100,000), what is the maximum decreasing subsequence? Note that the subsequence does not have to be consecutive. (USACO 2.2)#includ原创 2013-09-16 10:55:02 · 843 阅读 · 0 评论 -
Fractions to Decimals && 精确表达浮点数
1、Fractions to Decimals(USACO 2.4)Write a program that will accept a fraction of the form N/D, where N is the numerator and D is the denominator and print the decimal representation. If the decimal原创 2013-09-18 17:15:37 · 733 阅读 · 0 评论 -
《编程之美:分层遍历二叉树》的另外两个实现
转载于 http://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html问题定义给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子:输出:12 34 5 67 8转载 2013-05-28 23:01:45 · 415 阅读 · 0 评论 -
压入重标记(预流推进)
#include #include const int max = 54 ; const long MAX = 200000000 ; int N, M, R ; long map[max][max] ; //权值 int src, dis ; //源点和汇点 long star[max][3] ;转载 2013-05-15 09:26:51 · 495 阅读 · 0 评论 -
最小生成树(Prim算法和Kruskal算法)
转于 http://www.cnblogs.com/touchsunlight/archive/2010/08/04/1792557.htmlPrim算法:设图G =(V,E),其生成树的顶点集合为U。①、把v0放入U。②、在所有u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树。③、把②找到的边的v加入U集合。如果U集合已有n个元素,则结束,否则继续执行转载 2013-05-13 14:02:25 · 443 阅读 · 0 评论 -
Dijkstra算法求单源最短路径
与Prim算法朴素版实现起来差不多。。。//朴素版Dijkstra算法//输入一个图的矩阵,假定两点不相邻则权值为0//输出每个顶点的最短路径长度,可以打印指定顶点的路径//Dijkstra算法跟Prim算法很像//相同的地方是://两者都有一个已经求得"MST"和已经求得"最短路"的集合//每纳入一个结点x到集合,更新的是集合外与x直接相连的点的key转载 2013-05-17 10:34:06 · 668 阅读 · 0 评论 -
字符串相似度算法介绍
转载于 http://blog.sina.com.cn/s/blog_53e1c1230100bpe1.html字符串相似度算法介绍 1.编辑距离(Levenshtein Distance) 编辑距离就是用来计算从原串(s)转换到目标串(t)所需要的最少的插入,删除和替换的数目,在NLP中应用比较广泛,如一些评测方法中就用到了(wer,mWer等),同时也常用来计算你对原转载 2013-05-18 14:49:55 · 600 阅读 · 0 评论 -
差分约束专题
http://zakir.is-programmer.com/posts/21699.html先摘抄一段: 如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi 求解差分约束系统,可以转化成图论的单源最短路径问题。 观察xj-xi个人理解,就是根据题目给出的限定关系,得到一组方程组, 统一方程不等号(必须是>= 或者是 p转载 2013-05-19 10:17:27 · 594 阅读 · 0 评论 -
最短摘要生成
转自 http://blog.csdn.net/bertzhang/article/details/7278728题目:抽象点说,就是在一个字符串中,找一些目标字符串,找到包含所有目标字符串的最小字符串。题目虽然叫做最短摘要生成,但和实际的搜索snippet的计算还是有比较大的差距的。解法:文献[1]给出了一种比较好的解法,策略还是使用双指针,双指针对于很多算法设计很有价值,算法的思想是采转载 2013-05-19 09:45:38 · 501 阅读 · 0 评论 -
SUNDAY 算法
http://operatingfocus.bokee.com/3557609.htmlSUNDAY 算法描述:字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore)。两个算法在最坏情况下均具有线性的查找时间。但是在实用上,KMP算法并不比最简单的c库函数strstr()快多少,而BM算法则往往比KMP算法快上3-5倍。但是B转载 2013-05-19 19:49:15 · 391 阅读 · 0 评论 -
判断两个链表是否相交
转于 http://blog.163.com/song_0803/blog/static/4609759720120910373784/给出两个单向链表的头指针,判断这两个链表是否相交,如果相交给出相交的第一个结点一、两个链表均不含有环链表相交如下图 方法一:直接法 直接判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大转载 2013-05-20 10:13:13 · 628 阅读 · 0 评论 -
大数乘除
大数乘问题描述 求两个不超过 200 位的非负整数的积。 输入数据 有两行,每行是一个不超过 200 位的非负整数,没有多余的前导 0。 输出要求一行,即相乘后的结果。结果里不能有多余的前导 0,即如果结果是 342,那么就不能输出为 0342。 输入样例 12345678900 98765432100 输出样例 121932631112635269000原创 2013-05-18 11:31:30 · 442 阅读 · 0 评论 -
极角排序与凸包
转于 http://www.cnblogs.com/devtang/archive/2012/02/01/2334977.html介绍几种极角排序:1.利用叉积的正负来作cmp.(即是按逆时针排序).此题就是用这种方法1 bool cmp(const point &a, const point &b)//逆时针排序 2 {3 point origin;4转载 2013-05-20 12:38:40 · 6413 阅读 · 0 评论 -
线段树入门
转自 http://hi.baidu.com/semluhiigubbqvq/item/be736a33a8864789f4e4ad18把问题简化一下:在自然数,且所有的数不大于30000的范围内讨论一个问题:现在已知n条线段,把端点依次输入告诉你,然后有m个询问,每个询问输入一个点,要求这个点在多少条线段上出现过;最基本的解法当然就是读一个点,就把所有线段比一下,看看在不在线段中转载 2013-05-22 22:09:31 · 442 阅读 · 0 评论 -
Tarjan算法
http://www.nocow.cn/index.php/Tarjan%E7%AE%97%E6%B3%95求最近公共祖先(LCA)的Tarjan算法 首先,Tarjan算法是一种离线算法,也就是说,它要首先读入所有的询问(求一次LCA叫做一次询问),然后并不一定按照原来的顺序处理这些询问。而打乱这个顺序正是这个算法的巧妙之处。看完下文,你便会发现,如果偏要按原来的顺序处理询转载 2013-05-22 20:02:12 · 443 阅读 · 0 评论 -
最大流问题
转载于 http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117636.html最近又复习了下最大流问题,每次看这部分的内容都会有新的收获。可以说最大流问题的资料网上一搜一大把,根本没有必要自己写;但是大部分资料上的专业术语太多了,初学很难理解,至少我当年学这部分的时候前几次就没有看懂。所以我准备备份一点个人的理解。图-1转载 2013-05-11 09:42:07 · 726 阅读 · 0 评论 -
母函数
转载:http://www.cnblogs.com/FCWORLD/archive/2010/10/10/1847218.html 学了好长时间母函数了,一直没时间进行总结(忙于一些琐事),今天正好放一天假,趁空闲,对母函数做个总结,以便以后更加方便学习。进入主题: 我对母函数的理解是,母函数,顾名思义,就是母亲,那就说明,在这个函数里面还有儿子,即子函数。说白了,就是子转载 2013-05-11 11:10:57 · 457 阅读 · 0 评论 -
Fibonacci数计算中的两个思维盲点及其扩展数列的通用高效解法
http://www.cnblogs.com/flyinghearts/archive/2012/02/28/2372530.html㈠ Fibonacci数刚接触Fibonacci数的时候,在网上看到“矩阵法”,看到要先实现一个矩阵乘法,感觉太麻烦了。后来仔细观察Fibonacci数列,发现有下面的规律:F(n) = F(k)*F(n+1-k) + F(k-1)*F(n-k)转载 2013-05-11 21:20:17 · 549 阅读 · 0 评论 -
《编程之美: 求二叉树中节点的最大距离》的另一个解法(觉得比书上的好)
《编程之美: 求二叉树中节点的最大距离》的另一个解法问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。书上的解法书中对这个问题的分析是很清楚的,我尝试用自己的方式简短覆述。计算一个二叉树的最大距离有两个情况:情况A: 路径经过左子树的最深节点,通转载 2013-05-24 22:12:18 · 657 阅读 · 0 评论 -
POJ2553 The Bottom of a Graph
Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 7461 Accepted: 3064DescriptionWe will use the following (standard) definitions from graph theo原创 2013-05-12 14:51:13 · 468 阅读 · 0 评论 -
实现返回大于A的最小“不重复数” 百度2014校招笔试题
1、不重复数的实现 如果一个数字十进制表达时,不存在连续两位相同,则称之为“不重复数”。例如,105、164和198都是“不重复数”,而11、100和122不是。下面用一个long类型( long类型数字A),实现返回大于A的最小“不重复数”。解答:如1223445,从左往右找到第1个重复的数,将后面重复的那个数加1,然后将重复数后面的数设置为0101...,原创 2013-09-29 16:41:39 · 778 阅读 · 0 评论