各种模板
文章平均质量分 82
AC_XXZ
努力了不一定会成功,但不努力肯定会失败
展开
-
字符串哈希函数
最常用的两个: 1 2 const int MAXN = 1000003; 3 4 常用1 5 1 SDBMHash 6 int SDBMHash(char *str) 7 { 8 int hash = 0; 9 while (*str) hash = (*str++) + (hash 6) + (hash 16) - hash;原创 2014-12-17 19:19:04 · 1200 阅读 · 0 评论 -
AC 自动机模板
const int kind = 26; 5 struct node{ 6 node *fail; //失败指针 7 node *next[kind]; //Tire每个节点的26个子节点(最多26个字母) 8 int count; //是否为该单词的最后一个节点 9 node(){ //构造函数初始化原创 2015-01-05 16:13:04 · 905 阅读 · 0 评论 -
最短路之SPFA模板
一:邻接矩阵版本SPFA//如果要判断负环的话加一个记录入队的数组就行,当入队次数大于n的时候出现负环 int d[MAXN],vis[MAXN],w[MAXN][MAXN]; int n; void SPFA(int s) { fill(d,d+n,INF); d[s]=0; queue q; q.push(s); while(!q.empty())原创 2015-03-04 21:23:12 · 1581 阅读 · 0 评论 -
最小生成树模板
给出两个点的距离,问你可以不可以由这些点组成一棵树,我们首先构造一个最小生成树,然后比较各各点之间的距离是否与题目给出的距离相等,可以用dfs搜索整张图的每两个点之间的距离.下面给的做法非dfs做的,用一个数组f[][],记录x,y两点之间的距离,算距离的时候是通过目前点的前驱找,也就是说需要一个数组记录前驱,这样就可以不用dfs了, #include #include #inclu原创 2015-03-26 11:06:52 · 639 阅读 · 0 评论 -
字典树模板(HDU1251)
struct node{ int Count; node *next[26]; node(){ //初始化数据 memset(next,NULL,sizeof(next)); Count=0; } }; node *p,*root=new node(); void Insert(char *s)//插入新单词 { int i原创 2015-01-05 14:23:06 · 1023 阅读 · 0 评论 -
最短路径之 Dijkstra模板
一:时间复杂度为O(V*V)的Dijkstra const int Max_v = 100 + 10; const int INF = 1<<30; int cost[Max_v][Max_v];//权值 int d[Max_v];//顶点s出发最短距离 bool used[Max_v];//以使用过的图 int V;//顶点数 int Edge;//边数 void dijkstra(int原创 2015-02-10 22:42:03 · 957 阅读 · 0 评论 -
KMP模板
int s[maxn];//文本串 int p[10007];//匹配串 int next[10007];//匹配串的next数组 //优化过后的next 数组求法 void GetNextval(int n)//n代表p数组的长度 { int pLen = n; next[0] = -1; int k = -1; int j = 0; while (j原创 2015-01-04 11:04:22 · 1221 阅读 · 0 评论 -
矩阵快速幂
typedef struct { LL m[MAX][MAX]; } Matrix; LL a,b,c,n,f1,f2; Matrix P = {0,0,0, 0,0,0, 0,0,0, };//这个是更具你自己构造出来的矩阵 Matrix I = {0,0,0, 0,0,0,原创 2014-12-11 22:45:09 · 931 阅读 · 0 评论 -
筛法打表
有时候题目给的数据特别大,但是需要求素数的时候,应该用筛选法求素数,同理也可用筛选法求因子和原创 2014-06-19 17:45:19 · 1007 阅读 · 0 评论 -
【线段树】模板
struct NODE { int value; int left,right; } node[maxn]; int father[MAX]; void BuildTree(int i,int left,int right) { node[i].left = left; node[i].right = right; node[i].value = 0;原创 2015-02-17 18:01:12 · 903 阅读 · 2 评论