随笔分类 -  模板

线段树
摘要:一:线段树基本概念 1:概述 线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)! 性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c], 阅读全文

posted @ 2016-06-01 18:13 青春的梦想付诸行动 阅读(221) 评论(0) 推荐(0)

字典树
摘要:字典树,又称单词查找树,Trie树,是一种树形结构,哈希表的一个变种。用于统计,排序和保存大量的字符串(也可以保存其的)。 优点就是利用公共的前缀来节约存储空间。在这举个简单的例子:比如说我们想储存3个单词,nyist、nyistacm、nyisttc。如果只是 单纯的按照以前的字符数组存储的思路来 阅读全文

posted @ 2016-05-17 15:15 青春的梦想付诸行动 阅读(181) 评论(0) 推荐(0)

字典树删除多余的结点疑问
摘要:#include #include #include #include #include #include using namespace std; struct node { int cnt;//记录个数; struct node *next[26]; node() { cnt=0; memset(next,NULL... 阅读全文

posted @ 2016-05-17 11:28 青春的梦想付诸行动 阅读(220) 评论(1) 推荐(0)

大数各种运算
摘要:大数模板l 阅读全文

posted @ 2016-05-16 16:57 青春的梦想付诸行动 阅读(172) 评论(0) 推荐(0)

二分图最大匹配算法
摘要:什么是二分图: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 一个二分图中的最大匹配数等于这 阅读全文

posted @ 2016-05-13 13:52 青春的梦想付诸行动 阅读(289) 评论(0) 推荐(0)

并查集
摘要:并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。 使用并查集时,首先会存在一组不相交的动态集合 阅读全文

posted @ 2016-05-06 18:06 青春的梦想付诸行动 阅读(185) 评论(0) 推荐(0)

最小生成树
摘要:最小生成树问题,可以用克鲁斯卡尔算法和普利姆算法,Prim最主要的思想是根据顶点来得出结果,而Kruscal则是根据边来得出结果的,因此Prim最要运用于稠密图的计算,而Kruskal主要是运用于稀疏图的计算。因为只能选择一个楼连接到外界供电设备,所以只要构成最小生成树的边的和加上与外界连接花费最小 阅读全文

posted @ 2016-05-06 11:29 青春的梦想付诸行动 阅读(191) 评论(0) 推荐(0)

士兵杀敌二 (树状数组)
摘要:1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 5 int a[1000010],c[1000010]; 6 int N,M; 7 8 int lowbit(int x) 9 { 10 return x&(-x); 阅读全文

posted @ 2016-04-19 20:04 青春的梦想付诸行动 阅读(107) 评论(0) 推荐(0)

KMP AC自动机算法
摘要:在KMP算法中,为了确定在匹配不成功时,下次匹配时j的位置,引入了next[]数组,next[j]的值表示P[0...j-1]中最长后缀的长度等于相同字符序列的前缀。 对于next[]数组的定义如下: 1) next[j] = -1 j = 0 2) next[j] = max(k): 0<k<j 阅读全文

posted @ 2016-02-24 13:35 青春的梦想付诸行动 阅读(421) 评论(0) 推荐(0)

最短路径 Floyd && spfa
摘要:floyd算法是一个很强大的算法,它可以计算任意两点之间的最短路径,其边可以为负值。时间复杂度n^3 1 void floyd() 2 { 3 int k,u,v; 4 for(k=0;k<G.vunm;k++) 5 for(u=0;u<G.vunm;u++) 6 for(v=0;v<G.vunm; 阅读全文

posted @ 2016-02-06 00:30 青春的梦想付诸行动 阅读(260) 评论(0) 推荐(0)

最短路径 Dijkstra && Bellman_ford
摘要:1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<queue> 5 #include<cstring> 6 #define MAX 9999999 7 8 using namespace std; 9 1 阅读全文

posted @ 2016-01-26 19:43 青春的梦想付诸行动 阅读(206) 评论(0) 推荐(0)

枚举排列
摘要:无重复的全排列,0~n-1 1 void print_permutition(int n,int *a,int cur) 2 { 3 if(n==cur) 4 { 5 for(int i=0;ic1)25 {26 ... 阅读全文

posted @ 2016-01-22 22:13 青春的梦想付诸行动 阅读(159) 评论(0) 推荐(0)

导航