摘要:
1 ///树状数组模板 2 int lowbit(int x) 3 { 4 return x&-x; 5 } 6 7 void updata(int i,int x) 8 { 9 if (i>n) return ; 10 a[i]+=x; 11 i+=lowbit(i); 12 updata(i,x); 13 } 14 15 int ...
阅读全文
posted @ 2016-07-30 10:06
pb2016
阅读(175)
推荐(0)
编辑
摘要:
1 ///博弈模板 2 一)巴什博弈(Bash Game): 3 问题描述: 4 只有一堆n个物品,两个人轮流从这 5 堆物品中取物,规定每次至少取一 6 个,最多取m个。最后取光者得胜 7 问题解答: 8 很容易想到当n%(m+1)0时,先取必胜, 9 第一次先拿走n%(m+1),以后每个回合到 10 保持两人拿走的物品总和为m+1即可 11 12 二)威佐夫博弈(Wyth...
阅读全文
posted @ 2016-07-30 10:02
pb2016
阅读(219)
推荐(0)
编辑
摘要:
1 ///最长上升子序列LIS模板 2 int BinSerch(int l,int r,int cut) 3 { 4 while (l>1; 7 if (cut>d[m]&&cutd[m]) l=m+1; 9 else r=m-1; 10 } 11 return 0; 12 } 13 14 int LIS(int n) 15...
阅读全文
posted @ 2016-07-30 09:42
pb2016
阅读(218)
推荐(0)
编辑
摘要:
1 ///后缀数组模板 2 sa[i]表示所有后缀按字典数排序后以s[i] 3 开始的后缀排在第i位。height[i]表示字典数为i和i-1后缀的 4 的最长串的前缀。 5 int s[mx],sa[mx],t[mx],t2[mx],c[mx],n; 6 int rank[mx],height[mx]; 7 8 void build_sa(int m) 9 { 10 ...
阅读全文
posted @ 2016-07-30 09:40
pb2016
阅读(191)
推荐(0)
编辑
摘要:
1 ///AC自动机模板 2 void insert(char *s) 3 { 4 int p=0; 5 for (int i=0;s[i];i++) 6 { 7 int k=s[i]-'a'; 8 if (tree[p].next[k]==-1) 9 { 10 tree[cut]....
阅读全文
posted @ 2016-07-30 09:36
pb2016
阅读(152)
推荐(0)
编辑
摘要:
1 typedef struct Node 2 { 3 Node *next[26]; 4 int cut; 5 }Node; 6 Node *root; 7 void inser(char *s) 8 { 9 Node *p=root; 10 for (int i=0;s[i];i++) 11 { 12 i...
阅读全文
posted @ 2016-07-30 09:34
pb2016
阅读(216)
推荐(0)
编辑
摘要:
1 ///KMP模板 2 ///生成next数组 3 void get_next() 4 { 5 int i=0,j=-1; 6 next[0]=-1; 7 while (s1[i]) 8 { 9 if (j==-1||s1[i]==s1[j]) 10 { 11 i++; 12 ...
阅读全文
posted @ 2016-07-30 09:18
pb2016
阅读(220)
推荐(0)
编辑