上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 30 下一页
摘要: 简单KMP 求单词出现的次数。直接可以考虑,在每一次匹配成功时,让ans++,k=next[k],直到结束。#include#include#define maxn 1000010#define ll 100010int next[ll];char s[maxn],p[ll];void getnex... 阅读全文
posted @ 2015-08-08 22:03 sweat123 阅读(120) 评论(0) 推荐(0) 编辑
摘要: kmp简单题 找循环节。由于KMP的next[]数组,所以可以考虑最后一组的情况,及next[n]的值;n-next[n]的值表示一个循环节。如果n%(n-next[n])!=0表明该循环不成立。不然就是直接得到。#include#include#define maxn 1000010int nex... 阅读全文
posted @ 2015-08-08 21:53 sweat123 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 大牛的好文 http://www.cnblogs.com/tangzhengyue/p/4315393.html下图摘自链接大牛的博客1.由"next[j] == k;"这个条件,我们可以得到A1子串 == A2子串(根据next数组的定义,前后缀那个)。2.由"next[k] == 绿色色块所在的... 阅读全文
posted @ 2015-08-08 10:56 sweat123 阅读(224) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeusing namespace std;#define lson l,m,rt0) sum[rt]=1; else sum[rt]=-1; return ; } int m=(l+r)/2;... 阅读全文
posted @ 2015-08-07 22:00 sweat123 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 就是搜。 阅读全文
posted @ 2015-08-01 15:13 sweat123 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题目简化后最终要求的就是第二大的数。但是由于数据较大,不能直接求。可以先预处理,求出所有情况。#include#include#includeusing namespace std;struct node{ int from; int to;};struct Node{ int m... 阅读全文
posted @ 2015-08-01 09:05 sweat123 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 我理解错题目意思,稀里糊涂A了。其实就是先手必胜。 阅读全文
posted @ 2015-08-01 09:04 sweat123 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 字典树是一个比较简单的数据结构。它利用字符串的公共前缀来节约存储空间。并且效率不错;简单的说,就是多个字符串。如果前缀相同,就把他的前缀放在一条路上,用一个变量记录出现的个数。题目基本就是求给一堆字符串,再给一个字符串,问有多少出现过;基本相同原理,可以适当修改trie结构体里的内容,来达到要求; 阅读全文
posted @ 2015-07-31 09:21 sweat123 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 要注意二点 。这组数据16shehehesayshrheryasherhs出现重复的,也要算。所以这里答案为4;这一组16shehehesayshrheryasherhe查询单词中he出现过,所以后面的he不能记录,所以答案为4;#include#include#includestruct trie... 阅读全文
posted @ 2015-07-30 22:32 sweat123 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 开始以为枚举会超时,因为有50000的词。后来试了一发就过了。哈哈。枚举没一个单词,将单词拆为2半,如果2半都出现过,那就是要求的。#include#include#includestruct trie{ trie *next[26]; int flag;};trie *root;voi... 阅读全文
posted @ 2015-07-30 15:38 sweat123 阅读(126) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 30 下一页