字符串
文章平均质量分 85
cscoder
这个作者很懒,什么都没留下…
展开
-
POJ:2406 Power Strings
http://poj.org/problem?id=2406 题目意思很明确,确定一个a使得a^n=s,使得s最大,这个题目初看时,貌似需要找到最小的a,然后才能求出s,但这样肯定会超时。想到用KMP算法,将S当作模式串,对S进行一次自我匹配后,就可以找到了最小的a的长度了,其中先计算lena = lens - next[lens] ,然后判断lena是否能被lens 整除,如果能整除,则说明l原创 2012-04-23 20:45:15 · 389 阅读 · 0 评论 -
POJ:2752Seek the Name, Seek the Fame
http://poj.org/problem?id=2752 题目找出给定的字符串的字串使得前缀与后缀相等,用KMP解。思路很巧妙,充分利用了KMP算法的思想,即对于模式串的next[]数组进行求解的思想。我们知道对于模式串P,长度为lenp ,有next[lenp]为模式串p的前缀与后缀相等的长度,理由简单,next[lenp]保存的是以p[lenp]结尾的且与字符串开始的时候匹配的最大长度(原创 2012-04-23 22:23:09 · 306 阅读 · 0 评论 -
POJ3461:Oulipo
http://poj.org/problem?id=3461 题目很简单,就是寻找给定的模式串在目标串中出现了多少次,采用KMP算法。代码如下: /* ID: csuchenan Algorithm: KMP PROG: POJ 3461 Oulipo LANG: C++ */ #include #include #include #include using namespace std ;原创 2012-04-23 15:36:30 · 312 阅读 · 0 评论 -
codeforces 120 div 1 STL
STL 这个题目在之前比赛的时候没有搞出来,今天又拿出来做了一下。这个题目是判断给定的字符串序列是不是合法的,给定了语法的定义,实际上就是一个语法分析器,不过这个语法分析器比较简单。由于要输出结果就没有用LL(1)分析法那样去写了。说下算法思想,我们需要一个符号栈,用于存放符号‘’ ,同时用一个string 类型对象str存放分析结果。 读入一个字符串: .如果输入的是int ,那么我们原创 2012-07-10 11:50:34 · 509 阅读 · 0 评论 -
POJ 1056 and POJ 3630
POJ 3630 这道题目是个典型的字典树题目,不断的数字串,并判断是不是有前缀出现,需要注意的是:由于输入的串不一定会按长度排序,所以如果某个数字串的前缀出现在该数字串的后面,那么就会出现错误。我们可以这样,对输入的串进行排序,不过这样太麻烦了。考虑一下即使某个串在其子串前先出现,它还是会沿着子串的路径走,当子串出现的时候,我们可以这样判断:当数字串全部插入进去的时候,我们判断是不是有其它子串原创 2012-07-31 15:45:17 · 431 阅读 · 0 评论 -
POJ 2513 Colored Sticks
Colored Sticks 字符串的题目。字典树 + 欧拉回路 + 并查集。 用并查集判断图是不是连通。我们可以以输入的颜色做为点,这样同一根棍子上的两个端点的颜色就有父子关系,我们根据这个父子关系来建立一个并查集,最后如果任意两个点都在同一个集合中,那么我们就得知图必定是连通的。然后我们在判断是不是欧拉回路,这个只需要统计点的度数是奇数的点的个数,如果大于2那么必定不存在,否则存在。我们使用原创 2012-07-31 13:07:22 · 336 阅读 · 0 评论