上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 首先我们需要熟悉Dijkstra算法的原理:从某个源点到其余各顶点的最短路径,即单源点最短路径。单源点最短路径是指:给定带权有向图G和源点v,求从v到G中其余各顶点的最短路径。迪杰斯特拉(Dijkstra)提出了按路径长度递增的顺序产生各顶点的最短路径算法。该算法的基本思想是:(1)设置两个顶点的集... 阅读全文
posted @ 2014-07-29 17:17 future_hero 阅读(4966) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 using namespace std; 4 #define max 5000 5 6 int t[max];//目标串 7 int p[max];//模式串 8 int next[max];//前缀函数 9 int n,m;//n为目标串的数目,... 阅读全文
posted @ 2014-07-29 00:24 future_hero 阅读(838) 评论(0) 推荐(0) 编辑
摘要: 1、生成树的概念连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树。生成树是连通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则将出现一个回路;若去掉一条边,将会使之变成非连通图。 生成树各边的权值总和称为生成树的权。权最小的生成树称为最小生成树。2、最小生成树的性质... 阅读全文
posted @ 2014-07-28 16:46 future_hero 阅读(13575) 评论(0) 推荐(2) 编辑
摘要: 这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。 1. 首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进... 阅读全文
posted @ 2014-07-28 11:46 future_hero 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 一:素数的基本求法:bool pd(int x){ if(x==1)return false; for(int i=2;i*i1。那么必然存在点(x/k,y/k),会挡住(x,y)。问题就变成了:求1-N中,所有与N互质的数的个数。这不就是欧拉函数....so,ans=(euler(1)... 阅读全文
posted @ 2014-07-28 00:00 future_hero 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 1.欧拉函数的定义: 欧拉函数phi(x)等于不超过x且与x互素的整数的个数。2.欧拉函数的求法:推导过程见随笔《欧拉函数与容斥原理》.3.代码实现欧拉函数: 1 int euler_phi(int n) 2 { 3 int m=(int)sqrt(n+0.5);//取一半就行,简化计算 4... 阅读全文
posted @ 2014-07-27 23:45 future_hero 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 一 基础知识梳理:并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组... 阅读全文
posted @ 2014-07-27 15:19 future_hero 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 一 题意描述:就是在n支筷子里面选取k+8双筷子,每双筷子有三支,其中两支(A,B)比较小,第三支C比较大。下面我们要使k+8双筷子中(A-B)^2之和最小。应当怎样选取?二 思路分析:我们可以用:dp[i][j]表示从前j个筷子里面选取i双(先只取两只筷子组成一双)筷子时(A-B)^2的最小值。那... 阅读全文
posted @ 2014-07-25 09:09 future_hero 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 下面给出自己编写的代码: 1 #include 2 intP[100],A[100]; 3 voidprint_permutation(intn,int*P,int*A,intcur) 4 { 5 inti,j; 6 if(cur==n) 7 { 8 for(i=0;i 2 #... 阅读全文
posted @ 2014-07-24 16:31 future_hero 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 一 提议描述:输入正整数n,按照字典序从小到大的顺序输出前n个数的所有排列。二 思路分析:对此问题用递归的思想解决:先输出所有以1开头的排列(递归调用),然后输出以2开头的排列(递归调用),接着以3开头的排列,„,最后才是以n开头的排列。以1开头的排列的特点是:第一位是1,后面是按字典序的2~9的排... 阅读全文
posted @ 2014-07-24 15:17 future_hero 阅读(399) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页