字符串&KMP&AC自动机&trie树
文章平均质量分 78
muximuxi525
有些事情暂时可以放下但是绝不能放弃
展开
-
HNOJ LOL
LOLTime Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65366KB Problem descriptionYour friend Andreas has a very good sense of humour. In fact, it is so good that原创 2012-09-02 20:34:25 · 8553 阅读 · 0 评论 -
KMP模板总结:
其实注意到next数组是到n+1的就差不多了,n+1次这就是表达了原串最多有几个前缀和后缀是相等的.然后注意一下自己写的模板的字符串是从1开始的.然后对于next数组的理解嘛,他是要靠前面的next数组来辅助获得,所以在求next数组的时候有这个东西:k=next[k];对于k就是和书本的定义差不多.如果为0的时候就是属于第一种情况:在利用next数组匹配的时候,如果j=0的话,那么i原创 2013-04-28 08:35:24 · 1449 阅读 · 0 评论 -
HDU 1711 Number Sequence
题目大意:KMP模板题思路;顺手再多敲了下模板,但是一开始wa了,囧..原来我一开始用string来把所有输入都接收再KMP,直接被搞死的,string也是有容忍度的(见代码注释出)..囧..提醒自己一下AC Program:#include #include #include #include #include #include #include #include #原创 2013-04-28 09:16:03 · 762 阅读 · 0 评论 -
HDU1385 period
题目大意:就是给出一个串S,对于其长度为2以上的前缀,如果是可以子串周期性拼成的,那么按照前缀长度大小顺序输出相应的子串和周期数(周期至少为2)找规律(知道了就是常识而不是规律了).这个规律又是和next数组相关.满足这个规律就可以了:PS:我的next[1]=0; 下面简单解释:比如:先举两个是的例子:(1)如果前缀后缀如下图一样是相等的话,那么i-(next原创 2013-04-28 08:57:14 · 1136 阅读 · 0 评论 -
POJ 2406 Power Strings
题目大意:问原串是否可以是某个子串周期组成.如果是的话输出周期,否则输出1思路:在这道题是HDU1358的弱化版用next数组判断原串就为前缀是否是周期组成,如果是的话然后再用next数组求出循环节就可以了只是考虑了前缀为原串的情况,周期至少可以为1,那么就求出next数组直接判断next[n+1]的情况就可以了的. 我以为是在所有前缀中找出最大的.1wa.囧囧.比如abcab原创 2013-04-28 09:11:18 · 986 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace
题目大意:给出一个原串长度至少为3,问怎么样在两边添加字符使得成为周期串(周期为2以上),要求添加的字符最少思路:其实还是一道next数组的灵活运用而已,自己想了几种情况,枚举了下,再利用next数组求了几下..呵呵1A,爽.1.已经是完整周期的(1)abab 如果含有周期的,那么直接输出0即可,注意先排除next为1的情况2.还不是完整周期的 (1)ab原创 2013-04-28 09:36:40 · 851 阅读 · 0 评论 -
HDU 2222 Keywords Search
题目大意:如题 AC自动机模板题一道.思路:自己根据思想码了一遍,各种调试,然后对照原模板再调,,最后发现...差不多拷贝原模板了,嚓,,,,其实就是建立trie树,然后用过队列建立失败指针,也是KMP思想,利用前缀...失败指针尽量找深度深的,就是找最近的(我自己理解最近这个名词..)最后查询的时候,那么如果有路径就一直下,下不去的时候就找父亲的失败指针,看看这个失败指针有没有含原创 2013-04-28 21:15:43 · 779 阅读 · 0 评论 -
HDU 2087 剪花布条 && HDU 1686 Oulipo
HDU 2087 题目大意:略思路:剪花步条的话.其实就是匹配完成之后,令j=1的话就可以了,(注意我的next数组不同于一般人的,我的next[1]=0的)这样就是实现在下一个位置继续匹配 AC Program:#include #include #include #include #include #include #include #include #原创 2013-04-28 08:46:02 · 750 阅读 · 0 评论 -
UVA 10815 Andy's First Dictionary
Andy's First DictionaryTime Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %lluSubmit StatusDescriptionProblem B: Andy's First DictionaryTime limi原创 2013-01-27 18:40:01 · 1152 阅读 · 0 评论 -
UVA 644 Immediate Decodability
Immediate Decodability An encoding of a set of symbols is said to be immediately decodable if no code for one symbol is the prefix of a code for another symbol. We will assume for this pro原创 2013-01-29 21:41:21 · 839 阅读 · 0 评论 -
STL中的unique和erase
#include#include#include#includeusing namespace std;int main(){int n=17;int mm[30]={1,3,4,2,4,45,3,56,75,434,434,32,54,45,56,4353,32};//n=17; sort(mm,mm+n);int *p;p=unique(mm,mm+n);cout<<"原创 2012-10-18 11:38:30 · 757 阅读 · 0 评论 -
POJ 2001 trie字典树
题目大意:输出唯一能标志该单词的前缀。思路:建立字典树,在查找字典树的时候输出该单词的字母直到 该单词的字母cnt=1 或者读完整个单词#includeusing namespace std;char tmp[1001][21];struct node{ node *next[26]; int cnt; }*root ; void maketrie(char原创 2012-08-08 16:21:13 · 598 阅读 · 0 评论 -
第一次与sscanf亲密接触 HDU 2106
Sample Input31(2)2(3)3(4)411(10)11(2)11(3)11(4) Sample Output623 题目大意&&思路:进制转换的水题,括号内是说明括号前的数是几进制表示的,最后输出他们的和;sscanf很优雅很喜欢,虽然更强大的还有正则表达式,但是用她在比赛中应该已经收效不少~~大爱~~A原创 2012-10-02 10:53:03 · 700 阅读 · 0 评论 -
HNOJ Is it a Number?
Is it a Number?Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:65366KBProblem descriptionThis is it! You've finally graduated and started working.Looking forwa原创 2012-09-02 22:42:05 · 757 阅读 · 0 评论 -
强大的KMP解释,不懂都难(有图有真相)
六之再续:KMP算法之总结篇(必懂KMP) 总结:呜呜,感动的心田啊~~真心感谢作者的这篇博客,让我从新手KMP跨越到初级阶段,这容易嘛?~~反正KMP最关键的就是NEXT数组,然后求NEXT数组最关键的就是模式串前后缀的最长相等长度!文章转载出处: 作者:July。 http://blog.csdn.net/v_july_v/article/转载 2012-09-04 11:20:56 · 2876 阅读 · 0 评论 -
正则表达式(字符串处理大爱)
正则表达式目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作者网上的资源及本文参考文献更新纪录本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。转载 2012-10-02 10:22:00 · 2159 阅读 · 0 评论 -
KMP简洁模板
学了那么久KMP。今天才有那么一点点的懂~~囧。。next数组的得来还真心不是很懂啊~~~不过就是知道利用递归的思想,由下往上推,总而得出前缀后缀的最大相等长度,不过又有点回溯的思想,还好像有点递推的思想,因为后面的next数组的结果和前面的next数组的值是紧密相关的额~~下面贴模板,直接数组下标从一开始的 program: #include#include#includ原创 2012-09-04 16:32:23 · 637 阅读 · 0 评论 -
POJ1004 Financial Management
题目大意&&思路:不能再水了这道题目,求平均数。但是有几点可以引申并且要注意的:printf("%.2lf");是不规范的,只是在大部分的系统可以接受,所以这道水题我WA了2次让我情何以堪啊~~~呜呜。。只有printf("%.2f");才是规范的。即可接受单精度,又可接受双精度。(1)错误的做法:int n=12;double sum=0,tmp; while(n--) {原创 2012-10-06 10:12:09 · 683 阅读 · 0 评论 -
HDU 2087 剪布条
题目大意:剪出多少个子串思路:其实朴素的字符串子串查找也是可以过的,因为是O( len(S)*len(T) )的时间效率,但是KMP更快O( len(S)+len(T) )! AC program: #include#include#include#include#includeusing namespace std;char s[1005],t[1005]原创 2012-09-04 17:24:16 · 706 阅读 · 0 评论 -
HDU 1086
母串AZAZAZA子串AZAJ------ AZA题目大意:找出母串有多少子串,子串位置不可重合,但是可以重叠。思路:其实这是利用了一个很不起眼的巧妙来解决问题的,其实在第一个AZA匹配完毕之后,在常规的KMP匹配当中早已跳出,但是在这里先不跳出:void kmp(){ int i=1,j=1,cnt=0; while(i //不起眼儿的巧原创 2012-09-05 09:05:05 · 538 阅读 · 0 评论 -
UVA 409 Excuses, Excuses!
Excuses, Excuses! Judge Ito is having a problem with people subpoenaed for jury duty giving rather lame excuses in order to avoid serving. In order to reduce the amount of time required原创 2013-01-27 21:40:47 · 797 阅读 · 0 评论