模版
文章平均质量分 69
九野的博客
这个作者很懒,什么都没留下…
展开
-
字符串Hash
typedef long long ll;typedef unsigned long long ull;const int MAGIC = 131;long long h[N], base[N];long long MOD = (long long)1e9 + 7;inline void Hash(char *s) { int l = strlen(s); h[0] = 1;原创 2015-04-06 20:06:31 · 1188 阅读 · 0 评论 -
treap树模版
#define N 20005 struct Treap{ Treap *ch[2]; int r; //数字越大,优先级越高 int v; //值 int size; //子树的节点数 Treap(int v):v(v) { ch[0]=ch[1]=NULL; r=rand(); size=1;}原创 2014-01-15 15:04:48 · 1849 阅读 · 0 评论 -
费用流模版
bzoj 2245,速度非常神 /************************************************************** Problem: 2245 User: neko13 Language: C++ Result: Accepted Time:560 ms原创 2013-10-24 11:24:14 · 2220 阅读 · 0 评论 -
网络流模版
九野的博客,转载请注明出处 : http://blog.csdn.net/acmmmm/article/details/11199941特别注意:若是需要双向边,则addedge中第二个edge(反向弧) 的cap应该为cap而不是0如:http://acm.hdu.edu.cn/showproblem.php?pid=3870 (此题虽用网络流容易超时,但网络流的建图十分巧妙,要符合原创 2013-09-06 10:48:43 · 2569 阅读 · 1 评论 -
Manacher模版
求字符串中出现过的最长回文子串const int MAXN = 110010;//字符串长度<MAXNchar Ma[MAXN * 2];int Mp[MAXN * 2];void Manacher(char s[]) { int l = 0, len = strlen(s); Ma[l++] = '$'; Ma[l++] = '#'; for (int i = 0; i<le原创 2014-12-07 00:17:46 · 2172 阅读 · 0 评论 -
POJ 2337 Catenyms 欧拉通路
题目链接:点击打开链接题意:把输入的n个由小写字母构成的字符串连成字典序最小的一句话,使得所有字符串都恰好出现一次且相邻两个字符串相邻的字母相同思路:比如abcd,我们认为是这样一条边:a->d所以我们在a->d间建一条边。1、如:abcd, dfgh,那么得到的边就是 a->d, d->h。而题目的目标是每个字符串恰好用一次,即每条边恰好用一次。也就是找一条欧拉通原创 2015-01-29 13:50:11 · 1297 阅读 · 0 评论 -
2-sat模版
#define N 105*2#define M 40000+5//注意n是拆点后的大小 即 n <<= 1 N为点数(注意要翻倍) M为边数struct Edge{ int to, nex;}edge[M];int head[N], edgenum;void addedge(int u, int v){ Edge E = {v, head[u]}; edg原创 2013-11-05 14:59:14 · 2441 阅读 · 0 评论 -
无权边二分图的 二分匹配 模版及解析
int lef[N*N];//lef[v]表示右边点v 当前连接的点bool T[N*N];//右边的点是否连过vectorG[N];G是映射,G[X集].push_back(Y集)bool match(int x){ for(int i=0;i<G[x].size();i++) { int v=G[x][i]; if(!T[v]) { T[v原创 2013-09-03 11:26:01 · 2182 阅读 · 0 评论 -
组合数递推模版
组合数:公式递推代码C(n, m) = C(n -1, m - 1) + C(n - 1, m) const int M = 10007;const int MAXN = 1000;int C[MAXN+1][MAXN+1];void Initial(){ int i,j; for(i=0; i<=MAXN; ++i) { C[0][i] = 0原创 2013-10-05 19:25:16 · 9286 阅读 · 1 评论 -
MillarRabin模版 随机测大素数
支持long long#include typedef long long ll;ll GCD(ll a, ll b) { return b ? GCD(b, a % b) : a; }ll MultiMod(ll a, ll b, ll n) { // a * b % n ll res = 0; MillarRabin a %= n; while (b > 0) {原创 2015-04-04 14:15:25 · 1243 阅读 · 0 评论 -
树状数组的改段求段详解
以下是对于如何利用树状数组进行区间修改和区间查询的简介可以代替不需要lazy tag的线段树,且代码量和常数较小首先你需要学会树状数组,如果不会的话以下先讲解黑匣子使用树状数组的姿势首先定义一个数组 int c[N]; 并清空 memset(c, 0, sizeof c);1、单点修改 : c[x] += y; 对应的函数是 change(x, y);2、求前缀和 : 对应的原创 2015-07-14 13:46:50 · 2353 阅读 · 0 评论 -
exgcd求逆元模板
求x在模为mod时的逆元:exgcd(x,mod,x,y)求出后,第三个参数就是逆元。mod可以不为质数int exgcd(ll a,ll b,ll &x,ll &y){ if(a==0) { x=0;y=1; return b; } else { ll tx,ty;原创 2015-08-15 21:35:27 · 5931 阅读 · 0 评论 -
莫队算法模板
形如hdu 5381:点击打开链接add(int x, int y)的函数复杂度为 O(|x-y|)del同理#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include原创 2015-08-14 00:20:31 · 2667 阅读 · 2 评论 -
KM模版
http://blog.sina.com.cn/s/blog_691ce2b701016reh.html 注意当前图一定是 存在完美匹配的二分图 (否则会T)求完美匹配中边权和最大的算法:KM算法 #define N 100int W[N][N], n;int Lx[N], Ly[N];int Left[N];bool S[N], T[N];bool mat原创 2013-10-29 13:14:43 · 1642 阅读 · 0 评论 -
边双连通模版
//默认图连通且不存在重边 重边判断:bian[i][j]>1vectorG[N];struct node{ int u,v,d;}edge[N];//割边不会超过n条int edgecut; //初始化0void PUT(int u,int v,int d){ node E={u,v,d}; edge[edgecut++]=E;}int原创 2013-09-15 18:40:33 · 1846 阅读 · 1 评论 -
树状数组模版
一维数组数组形式inline int Lowbit(int x){return x&(-x);}void change(int i,int x)//单点更新i点改为x{ while(i<=n) { c[i]+=x; i+=Lowbit(i); }}int sum(int x){//区间求和 [1,x]原创 2013-08-09 10:34:17 · 1557 阅读 · 0 评论 -
LCT模版
HDU 5002#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;co原创 2014-09-15 21:05:41 · 2430 阅读 · 0 评论 -
二维平面曼哈顿距离最小生成树模版
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include const int inf = 1e8;const double eps =原创 2015-05-14 18:39:40 · 2074 阅读 · 0 评论 -
强连通tarjan模版
#include#include#include#include#include#include#include#include#define N 1000#define INF 1152921504606846976#define R(x) x<<1|1#define L(x) x<<1#define Mid(x,y) (x+y)>>1#define ll intu原创 2013-08-14 14:12:35 · 11627 阅读 · 5 评论 -
LCA转RMQ 模版及解析 + LCA倍增法模版
九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/15490519 LCA: 最近公共祖先 则 LCA(2,3) = 2 ; LCA(3,4) = 5; LCA(1,2) = 5; LCA(1,5) = 5; RMQ: 区间最值问题, 给定一组数,在O(logn) 的复杂度内回答区间的最值 (一般采用线段树原创 2013-11-11 23:21:15 · 5517 阅读 · 0 评论 -
最小生成树计数模版
typedef long long ll;const int N = 105; //点的个数const int M = 1005; //边的个数//点标从1-nstruct node { int set[N]; void init(int n) { for (int i = 0; i <= n; i++) set[i] = i; } int find(int x) {原创 2014-10-31 14:57:47 · 1299 阅读 · 0 评论 -
自适应辛普森公式模版
暴力求解一重定积分。形如 F(x) =原创 2014-10-05 19:01:13 · 2356 阅读 · 0 评论 -
矩阵快速幂模版
#define Matr 105 //矩阵大小struct mat//矩阵结构体,a表示内容,size大小 { int a[105][105],size; mat() { size=0; memset(a,0,sizeof(a)); }};void print(mat m)//输出矩阵信息,debug用原创 2013-08-18 09:09:48 · 3656 阅读 · 0 评论 -
后缀数组模版
----by kuangbin#include #include #include #include #include #include #define N 100005#define M 105using namespace std;#define rank Rank/** 后缀数组* DC3算法,复杂度O(n)* 所有的相关数组都要开三倍原创 2014-01-22 10:40:43 · 1707 阅读 · 0 评论 -
素数表
素数代码:ll prime[N],primenum;//不包括primenum math.hvoid PRIME(ll Max_Prime){ primenum=0; prime[primenum++]=2; for(ll i=3;i<=Max_Prime;i+=2) for(ll j=0;j<primenum;j++) if(i%prime[j]==0)break;原创 2013-09-05 18:25:40 · 5691 阅读 · 0 评论 -
扩展GCD 中国剩余定理(CRT) 乘法逆元模版
已知 a,b (a>=0,b>=0)求一组解 (x,y) 使得 (x,y)满足gcd(a,b) = ax+by注意求出的 x,y 可能为0或负数代码中g = gcd(a,b);LL extend_gcd (LL a , LL b , LL &x , LL &y) { if (b == 0) { x = 1LL; y = 0;原创 2014-06-21 23:01:06 · 2777 阅读 · 2 评论 -
高精度模版
//1#define MAXN 720struct HP{ int len,s[MAXN]; HP() { memset(s,0,sizeof(s)); len=1; } HP operator =(const char *num) { len=strlen(num); for(int i=0;i<len;i++) s[i]=num[len-i-1]-'0';原创 2014-04-10 23:11:14 · 1402 阅读 · 0 评论 -
点双连通模版 求割点,点双缩点
两种缩点的模版原创 2014-01-14 19:21:46 · 2024 阅读 · 0 评论 -
RMQ 的 ST算法模版
转自gx巨巨http://blog.csdn.net/u012350533/article/details/14645881 /*ST算法:基于动态规划求区间最值的算法。分为预处理和查询两部分预处理:定义 F[i][j] 为从 i开始到 i+2^j-1 区间内的最值 , 我们可以讲这段2^j的区间分成两部分长度都为2^(j-1)的相同区间区间1 为 i..原创 2013-11-10 10:32:24 · 2888 阅读 · 1 评论 -
最小树形图模版
以下来自kuangbin的最小树形图模版:#include #include #include #include #include using namespace std;/** 最小树形图* 复杂度O(NM)* 点从0开始*/const int INF = 100000000;const int MAXN = 1010; //点数const原创 2014-01-20 20:04:56 · 1743 阅读 · 0 评论 -
LCA倍增模版-转自DS
/* 首先我们构建一张表P[1,N][1,logN] (这里P[i][j]指的是结点i的第2^j个祖先) P[i][j] = pre[i] // j==0 时 P[ P[i][j-1] ][j-1] // 等于P[i][j-1]的第2^(j-1)的父亲*/const int N=40005;int pw[20];struct Edge { int原创 2014-01-17 23:13:29 · 1493 阅读 · 0 评论 -
splay模版
#include #include #include using std::queue;const int N = 100010;struct node { node *c[2],*fa; int val; int sz; int belong; void setc(int d,node *s) { c[d原创 2013-12-15 19:35:25 · 1614 阅读 · 0 评论 -
九野的计算几何模版
#include#include#include#include#includeusing namespace std;#define point Pointconst double eps = 1e-8;const double PI = acos(-1.0);double ABS(double x){return x>0?x:-x;}int sgn(double x){原创 2014-07-09 16:27:11 · 1575 阅读 · 0 评论 -
戴牛一万行的几何模板
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#i转载 2014-06-27 16:13:37 · 1598 阅读 · 3 评论 -
HDU 4344 随机法判素数(费马小定理
#include #include #include #include using namespace std;typedef long long ll;const int N = 108;const int S = 10;ll mult_mod(ll a, ll b, ll c) { a %= c; b %= c; ll ret = 0; whi原创 2014-10-09 20:46:00 · 1346 阅读 · 0 评论 -
欧拉函数模版
素数线性筛+欧拉函数#define ll int#define N 10000000//prime[0,primenum)ll prime[1000000], primenum;bool Isprime[N+10];//<=Max_Prime的素数void PRIME(ll Max_Prime){ primenum = 0; Isprime[0] = Isprime[1] =原创 2014-07-01 18:28:37 · 983 阅读 · 0 评论 -
哈密顿回路模版
找一条哈密顿回路。一个原创 2014-10-06 23:20:51 · 1965 阅读 · 0 评论 -
高斯消元模版
#include #include #include using namespace std;const int maxn = 105;int equ, var; // 有equ个方程,var个变元。增广阵行数为equ, 分别为0到equ - 1,列数为var + 1,分别为0到var.int a[maxn][maxn];int x[maxn]; // 解集.bool free_x原创 2014-07-29 18:12:59 · 1338 阅读 · 0 评论 -
全局最小割模版 n^3
//点标从0-n-1, 开始时先init 复杂度n^3//对于边(u,v,flow)://g[u][v]+=flow;//g[v][u]+=flow;typedef long long ll;const int N = 305;const ll inf = 1e18;ll g[N][N], w[N];int a[N], v[N], na[N];ll mincut(int n) {原创 2014-11-11 00:03:11 · 1988 阅读 · 0 评论 -
AC自动机模版
AC自动机1:#include #include #include using namespace std;inline int Max(int a,int b){return a>b?a:b;}inline int Min(int a,int b){return a>b?b:a;}#define maxnode 10000#define sigma_size原创 2013-10-06 18:50:41 · 2299 阅读 · 2 评论