随笔分类 -  算法

算法提高思维能力,不能忽视算法,亲
摘要:#include <iostream>#include <cstdio>#include <cstring>#define MAXN 40010using namespace std ;struct Graph{ int vex , next , dis ;};Graph g[MAXN * 2] , Q[400];int first[MAXN] , head[MAXN] , set[MAXN] , away[MAXN] , n , m ;bool visited[MAXN] ;//first[v]用来查找节点所在边,即g[first[v]],同时, g[i] 阅读全文
posted @ 2012-05-10 22:11 索少 阅读(553) 评论(0) 推荐(0) 编辑
摘要:[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强连通分量。大体来说有3中算法Kosaraju,Trajan,Gabow这三种!后续文章中将相继介绍,首先介绍Tarjan算法[Tarjan算法]Tarjan算法是基于对图深度优先搜索的算法,每个强连通分 阅读全文
posted @ 2012-05-06 21:25 索少 阅读(2025) 评论(0) 推荐(1) 编辑
摘要:堆优化 dijkstra#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;#define MAXE 400005#define MAXV 400005typedef long long int64;static const int64 INF = (int64) (1) << 60;struct Edge{ Edge *next; int to; int6 阅读全文
posted @ 2012-05-06 19:26 索少 阅读(1391) 评论(0) 推荐(0) 编辑
摘要:poj DP专辑(转)打星号的表示个人认为比较经典,或是算法比较好的题目1014* Dividing 半个背包,注意中断1036 Gangsters 1038* Bugs Integrated, Inc. 状态压缩1050 To the Max 最大子矩形1080 Human Gene Functions1088 滑雪1141* Brackets Sequence 括号序列1157 LITTLE SHOP OF FLOWERS1159* Palindrome1170 Shopping Offers1191 棋盘分割1276 Cash Machine1322 Chocolate1458 Comm 阅读全文
posted @ 2012-05-02 22:35 索少 阅读(238) 评论(0) 推荐(0) 编辑
摘要:int BinarySearch(int *a,int &e,int n)//在递增序数组a中找x{ int left=0; int right=n-1; while(left<=right)//<= { int mid=(left+right)/2; if(e>a[mid]) left=mid+1; else if(e<a[mid]) right=mid-1; else if(e==a[mid]) return mid; } return -1;//未找到e} 阅读全文
posted @ 2012-04-27 00:41 索少 阅读(137) 评论(0) 推荐(0) 编辑
摘要:转载自http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html KMP算法在介绍KMP算法之前,先介绍一下BF算法。一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。 举例说明: S: ababcababa P:ababaBF算法匹配的步骤如下 i=0 i=1 i... 阅读全文
posted @ 2012-04-26 11:55 索少 阅读(683) 评论(0) 推荐(0) 编辑
摘要:异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。性质1、交换律2、结合律(即(a^b)^c == a^(b^c))3、对于任何数x,都有x^x=0,x^0=x4、自反性 A XOR B XOR B = A xor 0 = A异或运算最常见于多项式除法,不过它最重要的性质还是自反性:A XOR B XOR B = A,即对给定的数A,用同样的运算因子(B)作两次异或运算后仍得 阅读全文
posted @ 2012-04-25 19:05 索少 阅读(38769) 评论(3) 推荐(7) 编辑

点击右上角即可分享
微信分享提示