其它 -------- 模板
SolarDomo
每天都被头像萌醒
展开
-
扫描线 模板
测试题目:HDU 1542using namespace std; const int maxn = 100 + 5; const int TOT_SEG = maxn * 2; /** Seg ** l,r,h 分别为线段的左端点,右端点,高 ** f 标识上下边 */ struct Seg{ int f; double l,r,h; void set(double l原创 2016-10-12 10:44:06 · 492 阅读 · 0 评论 -
C++大整数模板 BigInteger
网上找的模板#include <cstdio> #include <algorithm> #include <cstring> using namespace std;struct BigInteger{ int A[25]; enum{MOD = 10000}; BigInteger(){memset(A, 0, sizeof(A)); A[0]=1;} void转载 2016-08-13 20:56:00 · 2719 阅读 · 0 评论 -
快速输入模板
整数inline bool scan_d(int &num) { char in;bool IsN=false; in=getchar(); if(in==EOF) return false; while(in!='-'&&(in<'0'||in>'9')) in=getchar(); if(in=='-'){ Is转载 2016-08-14 19:11:29 · 439 阅读 · 0 评论 -
后缀数组 倍增算法模板
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 n,int m) { int i,j,p,*x=wa,*y=wb,*t; for(i=0;i<m;i++) ws[i]=0;原创 2016-08-19 10:42:08 · 843 阅读 · 1 评论 -
树链剖分模板
const int maxn = 100000 + 5; //树中节点个数 //边集 struct Edge{ int v,pre,c; }Es[maxn * 2]; int head[maxn],TOT_EDGE; void INIT_EDGE(){ //边集初始化 memset(head,-1,sizeof head);原创 2016-09-19 20:01:42 · 249 阅读 · 0 评论 -
Treap 模板
/** ** ch:节点的孩子节点 ** fa:夫节点 ** fix;优先级 ** size:当前子树的大小 ** tot:节点个数(包括sroot) ** sroot:超级根节点 ** key:节点的键值 */ const int maxn = 15000 + 50,INF = 0x7fffffff; int ch[maxn][2],fa[maxn],fix[maxn],size[m原创 2016-09-26 10:09:22 · 234 阅读 · 0 评论 -
伸展树模板
已过的题:HDU 4585/** ---- SPLAY ---- **/ int ch[maxn][2],fa[maxn],size[maxn]; int key[maxn],pos[maxn]; int tot,root,sroot; void Splay_Init(){ tot = 1; root = sroot = 0; ch[0][0] = ch[0][1] = 0;原创 2016-09-26 11:20:03 · 379 阅读 · 0 评论 -
字典树模板
测试题:struct Trie{ /** * maxnode: Trie树中最多可能的节点个数 上限为字符串个数 * 最长长度 * sigma_size: 组成字符串的字符种类 * ch: 边 * value: 节点的值 * sz: Trie树的总节点个数 */ int原创 2016-09-26 17:49:23 · 230 阅读 · 0 评论 -
KMP 模板
测试题目:const int maxn = 100; char s[maxn],p[maxn]; int fail[maxn]; /* p为模式串 ** f为保存失配边的数组 ** */ void getFail(char* p,int* f){ int m = strlen(p); f[0] = 0; f[1] = 0; for(int i = 1;i < m;++i)原创 2016-09-26 17:52:59 · 216 阅读 · 0 评论 -
Manacher 模板
测试题目:const int maxn = 500; int dis[maxn]; char str1[maxn],str2[maxn];int get_dis(){ int len = strlen(str1); str2[0] = '$'; char* str_a = str2 + 1; for(int i = 0;i <= len;++i){ s原创 2016-09-26 18:07:35 · 258 阅读 · 0 评论 -
线段树 区间更新模板
测试题目:HDU 1166,/** 线段树模板 */ /** 以求区间和为例 */ #define lson rt << 1 , l ,mid #define rson rt << 1 | 1,mid + 1,r const int maxn = 50000 + 50; int v[maxn << 2],laze[maxn << 2]; int A[maxn];// 向下Push laze标记 vo原创 2016-10-08 10:16:22 · 248 阅读 · 0 评论 -
AC自动机 模板
测试题目:HDU 2222,const int maxn = 10000 * 50 + 50,sigma_size = 26;/** AC_AUTOMATION */ int ch[maxn][sigma_size],fail[maxn],tot; int value[maxn];/** 初始化 */ void Init(){ memset(ch[0],0,sizeof ch[0]);原创 2016-10-12 10:08:00 · 258 阅读 · 0 评论 -
各种模板总结
树链剖分模板const int maxn = 100000 + 5; //树中节点个数 //边集 struct Edge{ int v,pre,c; }Es[maxn * 2]; int head[maxn],TOT_EDGE; void INIT_EDGE(){ //边集初始化 memset(head,-1,sizeof head)原创 2016-09-26 13:10:19 · 464 阅读 · 0 评论