上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 20 下一页
  2012年8月15日
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define oo 0x7FFFFFFF 5 #define MAXN 1000010 6 using namespace std; 7 struct SplayTree { 8 int root, size; 9 int a[MAXN], st[MAXN], top; 10 int next[MAXN][2], pre[MAXN], key[MAXN], num[MAXN]; 11 bool flip[MAXN];... 阅读全文
posted @ 2012-08-15 20:46 DrunBee 阅读(773) 评论(0) 推荐(0) 编辑
  2012年8月14日
摘要: 1 #include<cstdio> 2 #include<algorithm> 3 #define MAXN 300010 4 using namespace std; 5 struct SplayTree { 6 int root, size; 7 int next[MAXN][2], key[MAXN], pre[MAXN], num[MAXN]; 8 bool flip[MAXN], space; 9 inline void PushUp(int x) { 10 num[x] = num[next[x][0]] + n... 阅读全文
posted @ 2012-08-14 01:56 DrunBee 阅读(775) 评论(0) 推荐(0) 编辑
  2012年8月13日
摘要: 线段树: 1 #include<cstdio> 2 #define INF 987654321 3 #define MAXN 200010 4 int tree[MAXN << 2]; 5 inline int MAX(int x, int y) { 6 return x > y ? x : y; 7 } 8 inline void PushUp(int rt) { 9 tree[rt] = MAX(tree[rt << 1], tree[rt << 1 | 1]);10 }11 void Build(int L, int R, int r 阅读全文
posted @ 2012-08-13 01:11 DrunBee 阅读(717) 评论(0) 推荐(0) 编辑
  2012年8月12日
摘要: 1 #include<cstdio> 2 #define INF 0x7FFFFFFF 3 #define MAXN 100010 4 struct SplayTree { 5 int num[MAXN], next[MAXN][2], pre[MAXN], key[MAXN]; 6 int root, size; 7 inline void PushUp(int x) { 8 num[x] = num[next[x][0]] + num[next[x][1]] + 1; 9 } 10 inline void Rota... 阅读全文
posted @ 2012-08-12 20:00 DrunBee 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #define MAXN 100010 3 struct SplayTree { 4 int size, root; 5 int next[MAXN][2], pre[MAXN], key[MAXN], pos[MAXN]; 6 void Init() { 7 size = root = 0; 8 next[0][0] = next[0][1] = 0; 9 }10 void NewNode(int &rt, int father, int val, int id) {11 ... 阅读全文
posted @ 2012-08-12 02:09 DrunBee 阅读(1375) 评论(0) 推荐(0) 编辑
  2012年8月9日
摘要: 数据有两组漏了一个数,所以在读入之前要先赋值为0。 1 #include<cstdio> 2 #include<algorithm> 3 #define MAXN 100010 4 #define INF 0x7FFFFFFF 5 using namespace std; 6 struct SpalyTree { 7 int size, root; 8 int next[MAXN][2], pre[MAXN], key[MAXN]; 9 void Init() {10 size = root = 0;11 }12 void NewNode... 阅读全文
posted @ 2012-08-09 23:20 DrunBee 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 给出n个单词,再给出一段包含m个字符的文章,找出有多少个单词在文章里出现过。1、对n个单词构造字典树。2、构造失败指针。设当前节点为X,失败指针指向Y。1。若当前节点X没有儿子t,则X的儿子t等价于Y的儿子t。2。若当前节点X有儿子t,t的失败指针指向Y的儿子t。Y与X有最长公共后缀。3、模式匹配。沿着next指针遍历。例:4个单词:0101、1011、1100、0010。在构造完失败指针后,顺便完善next指针,使得匹配时只需沿着next指针遍历,匹配时沿着fail指针遍历是为了统计出当前串包含的子串。模板题:【HDU】2222 Keywords Search【HDU】2896 病毒侵袭【H 阅读全文
posted @ 2012-08-09 18:24 DrunBee 阅读(3410) 评论(0) 推荐(1) 编辑
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #define MOD 1000000009 5 #define MAXN 2010 6 #define MAXM 210 7 using namespace std; 8 struct Trie { 9 bool end; 10 int fail, next[2]; 11 void Init() { 12 end = false; 13 fail = 0; 14 memset(next... 阅读全文
posted @ 2012-08-09 01:05 DrunBee 阅读(467) 评论(0) 推荐(0) 编辑
  2012年8月7日
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #define MAXN 60000 5 #define MAXL (1<<10) 6 #define MAXM 200 7 using namespace std; 8 struct Trie { 9 bool virus; 10 int end, fail, next[2]; 11 void Init() { 12 virus = false; 13 end = fail = next[0] = n... 阅读全文
posted @ 2012-08-07 23:13 DrunBee 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #define MAXN 100010 5 #define MAXM 26 6 #define INF 123456789 7 using namespace std; 8 struct Trie { 9 int fail, pos[2], cnt[2], len, next[MAXM]; 10 void Init() { 11 len = fail = pos[0] = pos[1] = cnt[0] = cnt[1] = ... 阅读全文
posted @ 2012-08-07 00:30 DrunBee 阅读(582) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 20 下一页