模板集(陆续更新)
文章平均质量分 66
xiaotaoqibao
这个作者很懒,什么都没留下…
展开
-
并查集(模板)
/**** **** **** **** **** ***** Function Name : 并查集* Description : 集合操作, 并, 除, 判断**** **** **** **** **** ****/ const int Max=1000;typedef int ElemType;int Parent[Max],Rank[Max];int Find(int x){ int temp = x,原创 2010-07-26 19:40:00 · 4058 阅读 · 0 评论 -
网络最大流(dinic)【模板】
#include using namespace std;const int maxn=150000;const int maxm=2000000;const int inf=1原创 2010-08-19 10:25:00 · 1212 阅读 · 1 评论 -
最长公共子序列【线段树版的LCS】
<br />#include<iostream>#include<cstring>#include<algorithm>#include<vector>#define N 200008#define Musing namespace std;int hash1[N], hash2[N], x[N], y[N], dp[N], next1[N], next2[N];vector <int> v[N];struct LTree{ int a, b,原创 2010-08-13 09:15:00 · 679 阅读 · 0 评论 -
树状数组【模板】
<br />int lowbit(int t){ return t&(-t);}void change(int pos , int num,int n) //修改{ while (pos<=n) { tree[pos] += num; pos += lowbit(pos); }}int ask(int end)//查询{ int sum = 0; while(end >原创 2010-08-13 10:17:00 · 421 阅读 · 0 评论 -
后缀数组【模板】
【倍增法模板】:/*************************************/maxn 是两个字符串之和连接后的长度/*************************************/int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int cmp(int *r,int a,int b,int l){return r[a]==r[b]&&r[a+l]==r[b+l];}void da(int *r,int *sa,int原创 2010-08-12 17:52:00 · 1127 阅读 · 0 评论 -
最长公共子序列【模板】
<br />/********************************** 最长公共子序列(LCS)只能处理一些较短的字符串的DP算法 **********************************/#define N 10001 /*字符串长度*/int longest[N][N];int LCS(char *s1,char *s2){ int i,j,len1,len2; len1 = strlen(s1); len2 = s原创 2010-08-12 10:05:00 · 920 阅读 · 0 评论 -
字典树【模板】
/*******************************************************************************此模板主要是针对都是小写字母的。其他情况在此基础上改一改就可以了,要懂得灵活运用。 ********************************************************************************/struct trie /*字典树的节点内容*/{ int coun原创 2010-08-11 19:43:00 · 2091 阅读 · 3 评论 -
矩阵乘法的模板
【转载MatRush@ZJUT百度博客的】矩阵运算是属于线性代数里的一个重要内容,上学期学完后只觉得矩阵能解线性方程,不过高中的时候听说过矩阵能优化常系数递推以及将坐标上的点作线性变换,于是找了些资料研究了一下,并把许多经典题以及HDU shǎ崽大牛总结的矩阵乘法的题目[1]、[2]和开设的矩阵乘法DIY Contest给做完了,感觉收获颇丰。 一个矩阵就是一个二维数组,为了方便声明多个矩阵,我们一般会将矩阵封装一个类或定义一个矩阵的结构体,我采用的是后者: 最特殊的矩阵应该就是单位矩阵E了,它原创 2010-08-03 19:59:00 · 2827 阅读 · 0 评论 -
中国剩余定理(chinese remainder theorem)【模板】
<br />#include <iostream>using namespace std;int Extended_Euclid(int a,int b,int &x,int &y) //扩展欧几里得算法{ int d; if(b==0) { x=1;y=0; return a; } d=Extended_Euclid(b,a%b,y,x); y-=a/b*x; return d;}int Chinese_Remainder(int原创 2010-08-01 17:10:00 · 5235 阅读 · 0 评论 -
二分匹配(匈牙利算法)【模板】
<br />#include <iostream>#include <vector>using namespace std;#define MAX 1005vector< vector<int> > map; int mark[MAX];bool flag[MAX];int nm,num;bool dfs(int pos) //搜pos点是否存在增广路{ int i,pre,tp; int len=map[pos].size(); for(i=原创 2010-07-31 08:07:00 · 491 阅读 · 0 评论 -
最小生成树(Prim模板)
<br />#include <stdio.h>#include <string.h>#define MAX 505#define MAXCOST 0x7fffffffint sum,flag,num;void Prim(int graph[][MAX],int n) { int i,j,k,min; int lowcost[MAX]; int adjvex[MAX]; for(i=1;i<n;i++)原创 2010-07-30 09:09:00 · 509 阅读 · 0 评论 -
有关矩阵的模板【模板】
<br />#include <stdlib.h>#include<stdio.h>#include<string.h>/*矩阵最大的维数,比如你可能用到100*100的矩阵,那就定义这么大,虽然实际上用到的可能小一点。 */#define MAX_DIMENSION 10/*矩阵每个元素的类型。 */typedef int MATRIX_TYPE;/*矩阵乘法运算时和加法运算时,为避免溢出,在取模之前用这个类型暂存。 */typedef long原创 2010-07-31 16:39:00 · 818 阅读 · 0 评论 -
欧拉函数(模板)
#include using namespace std;#define N 100000001int euler(int n){ int ans=1; int i; for(i=2;i*i1) ans*=n-1; return ans;}int main(){ int n; while(scanf("%d",&n),n) { printf("%d/n",n-1-euler(n)); } return 0;}原创 2010-07-30 09:07:00 · 2666 阅读 · 1 评论 -
网络最大流(SAP)【模板】
<br />#include <stdio.h>#include <string.h>const int inf=1<<30;#define MAXM 2000 struct edge{ int from, to, val, next;}e[MAXM*MAXM];int v[MAXM];int n,m,len,st,ed; //st = 源点 ed = 汇点void init(){ len = 0; memset(v,-1,sizeo原创 2010-08-25 16:59:00 · 991 阅读 · 0 评论