线段树

摘要: // SegmentTreestruct SegNode{ int lst,rst; int sum,val; int lazy;};SegNode node[maxn];void BuiSegTree(int idx,int lst,int rst,int a[]){ node[idx].lst=lst; node[idx].rst=rst; int mid=(lst+rst)#includeusing namespace std;int in[200000]; //40000开太小,越界int lowbit(int a){ return a&-... 阅读全文
posted @ 2013-08-13 12:53 Amyc 阅读(166) 评论(0) 推荐(0) 编辑

预处理log2n

摘要: // log2nfor(int ep2=2,i=0,j=0;iep2){ j++; ep2<<=1; } lg2[i]=j;} 阅读全文
posted @ 2013-08-13 12:26 Amyc 阅读(237) 评论(0) 推荐(0) 编辑

树状数组

摘要: // BITreeint bitree[maxn];#define lowbit(n) ((n)&(-n))void BuiBIT(int n,int a[]){ for(int i=1;i0;i-=lowbit(i)) sum-=bitree[i]; return sum;} 阅读全文
posted @ 2013-08-13 12:24 Amyc 阅读(75) 评论(0) 推荐(0) 编辑

最近点对

摘要: 最近点对 阅读全文
posted @ 2013-08-13 11:13 Amyc 阅读(136) 评论(0) 推荐(0) 编辑

RMQ

摘要: // Name : RMQ// Parameter : // Return : 无void RMQInit(int rmq[][],int a[]){ for(int i=0;i<n;i++) rmq[i][0]=a[i]; for(int j=1;(1<<j)<n;j++) for(int i=0;i+(1<<j)-1<n;i++) rmq=[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);}int RMQ(int l,int r){ int j=lg2[r-l+1]; return min(r 阅读全文
posted @ 2013-08-13 10:47 Amyc 阅读(103) 评论(0) 推荐(0) 编辑

Trie树

摘要: // Name : Trie树// Parameter : tnode:要插入单词的节点的父节点的指针 word:单词// Return : 无#include#include#includeusing namespace std;const int maxc=30;typedef struct TrieNode{ int voc; // 这个节点表示的单词有几个 TrieNode *kid[maxc]; TrieNode(){ voc=0; memset(kid,-1,sizeof(kid)); }}Trie;Trie *root=new Trie();void AddVoc... 阅读全文
posted @ 2013-08-13 10:26 Amyc 阅读(78) 评论(0) 推荐(0) 编辑

KMP

摘要: // Name : KMP// Parameter : tex[]:主串 pat[]:模式串// Return : 匹配数#include#include#includeusing namespace std;const int maxn=1005;int KMP(char tex[],char pat[]){ int overlap[maxn]; memset(overlap,-1,sizeof(overlap)); int l=strlen(tex),m=strlen(pat); overlap[1]=0; for(int i=2;i#include#includeusin... 阅读全文
posted @ 2013-08-13 10:13 Amyc 阅读(155) 评论(0) 推荐(0) 编辑

后缀数组

摘要: // SuffixArrayvoid InitSa(char tex[],int sa[]){ const int len=strlen(tex); int code[len],amt[ABSIZE]; int subsa[len],cardn; for(int i=0;i=0;i--) { sa[--amt[i]]=i; } for(int k=1,cardn=ABSIZE;k=k) subsa[i+j]=sa[i]-k;} memset(amt,0,sizeof(amt)); for(int i=0;i=0;i--) ... 阅读全文
posted @ 2013-08-13 10:08 Amyc 阅读(192) 评论(0) 推荐(0) 编辑

AC自动机

摘要: // SuffixArrayvoid InitSa(char tex[],int sa[]){ const int len=strlen(tex); int code[len],amt[ABSIZE]; int subsa[len],cardn; for(int i=0;i=0;i--) { sa[--amt[i]]=i; } for(int k=1,cardn=ABSIZE;k=k) subsa[i+j]=sa[i]-k;} memset(amt,0,sizeof(amt)); for(int i=0;i=0;i--) ... 阅读全文
posted @ 2013-08-13 10:07 Amyc 阅读(143) 评论(0) 推荐(0) 编辑

数据结构与算法列表

该文被密码保护。 阅读全文
posted @ 2013-08-13 09:47 Amyc 阅读(2) 评论(0) 推荐(0) 编辑