上一页 1 2 3 4 5 6 7 8 ··· 14 下一页
  2012年5月7日
摘要: 1 /* 2 * kmp 3 */ 4 5 #include <cstdio> 6 #include <cstring> 7 #include <iostream> 8 9 using namespace std;10 11 const int N = 100005;12 13 int next[N];14 char pat[N];15 16 void indexNext() {17 int k = 0;18 next[1] = 0;19 for (int i=2; pat[i]; ++i) {20 while (k && pat[k+1]! 阅读全文
posted @ 2012-05-07 07:12 Try86 阅读(193) 评论(0) 推荐(0)
摘要: 1 /* 2 * KMP 3 * 思路:把两个串连接,然后求next[]数组值 4 * 注意:当两个串都是重复串且重复子串一样是,要特殊处理 5 */ 6 7 #include <cstdio> 8 #include <iostream> 9 10 using namespace std;11 12 const int N = 50005;13 14 int next[N<<1];15 char str[N<<1], pat[N];16 17 void indexNext() {18 int k = 0;19 next[1] = 0;20 ... 阅读全文
posted @ 2012-05-07 07:01 Try86 阅读(280) 评论(0) 推荐(0)
  2012年5月6日
摘要: 1 /* 2 * kmp 3 */ 4 5 #include <cstdio> 6 #include <iostream> 7 8 using namespace std; 9 10 const int N = 1005;11 12 int next[N];13 char str[N], pat[N];14 15 void indexNext() {16 int k = 0;17 next[1] = 0;18 for (int i=2; pat[i]; ++i) {19 while (k && pat[k+1]!=pat[i]) k = next... 阅读全文
posted @ 2012-05-06 21:52 Try86 阅读(161) 评论(0) 推荐(0)
摘要: 1 /* 2 * kmp 3 * 利用next[]数组的性质求周期 4 */ 5 #include <stdio.h> 6 #include <string.h> 7 #define N 1000005 8 9 int next[N];10 char str[N];11 12 void indexNext() {13 int i, k = 0;14 next[1] = 0;15 for (i=2; str[i]; ++i) {16 while (k && str[k+1]!=str[i]) k = next[k];17 if (... 阅读全文
posted @ 2012-05-06 21:40 Try86 阅读(162) 评论(0) 推荐(0)
摘要: 1 /* 2 * kmp 3 */ 4 #include <cstdio> 5 #include <iostream> 6 7 using namespace std; 8 9 const int N = 10005;10 const int M = 1000005;11 12 int str[M], pat[N], next[N];13 14 void indexNext(int lenPat) {15 int k = 0;16 next[1] = 0;17 for (int i=2; i<=lenPat; ++i) {18 while (k &... 阅读全文
posted @ 2012-05-06 21:16 Try86 阅读(153) 评论(0) 推荐(0)
摘要: 1 /* 2 * kmp 3 */ 4 5 #include <cstdio> 6 #include <cstring> 7 #include <iostream> 8 9 using namespace std;10 11 const int N = 100005;12 13 char str[N<<1];14 char pat[N];15 int next[N];16 17 void indexNext() {18 int k = 0;19 next[1] = 0;20 for (int i=2; pat[i]; ++i) {21 while 阅读全文
posted @ 2012-05-06 20:28 Try86 阅读(196) 评论(0) 推荐(0)
  2012年5月5日
摘要: 1 /* 2 * 排序+二分 3 */ 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 #define N 501 8 9 int a[N], b[N*N], c[N];10 11 int cmp(const void *a, const void *b) {12 return *(int *)a - *(int *)b;13 }14 15 int main() {16 int l, n, m, s, i, j, k, tmp, tmpp, left, right, mid, flag, cas = 0;17 wh... 阅读全文
posted @ 2012-05-05 22:52 Try86 阅读(212) 评论(0) 推荐(0)
  2012年4月30日
摘要: 调整好心态!迎接新的开始!加油! 阅读全文
posted @ 2012-04-30 21:43 Try86 阅读(109) 评论(0) 推荐(0)
  2012年4月27日
摘要: 摘自:http://acm.hrbust.edu.cn/hcpc2012/index.php?act=showpost&p=15本题是图论题根据题意,判断一颗树中,某个点是否是另一个点的后裔。根据递归函数的入栈出栈时间戳特点(即子结点的入栈时间戳要晚于自己,而且子节点的出栈时间戳要早于自己)或者括号定理在O(N)内预处理一遍图,即可在O(1)时间完成每次查询。d[x]表示深度优先搜索中x的访问时间戳f[x]表示深度优先搜索中x的结束访问时间戳如果d[u] < d[v] < f[v] < f[u],那么v是u的后裔。 1 #include <cstdio> 阅读全文
posted @ 2012-04-27 17:18 Try86 阅读(161) 评论(0) 推荐(0)
摘要: 摘自:http://acm.hrbust.edu.cn/hcpc2012/index.php?act=showpost&p=15本题是动态规划+矩阵乘法题定义f[i][0]为走了i步恰好达到S的不同走法定义f[i][1]为走了i步恰好达到A的不同走法定义f[i][2]为走了i步恰好达到B的不同走法定义f[i][3]为走了i步恰好达到C的不同走法状态转义方程为:f[i][0] = f[i – 1][1] + f[i – 1][2] + f[i – 1][3];f[i][1] = f[i – 1][0] + f[i – 1][2] + f[i – 1][3];f[i][2] = f[i – 阅读全文
posted @ 2012-04-27 16:03 Try86 阅读(206) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 14 下一页