字符串
sunrainchy
这个作者很懒,什么都没留下…
展开
-
HUST 1004 String Compare(字符串前缀对)
题目链接:http://acm.hust.edu.cn/problem.php?id=1004Maybe there are 750,000 words in English and some words are prefix of other words, for example: the word "acm" can be treat as one prefix of "acmicpc".原创 2013-12-20 14:35:21 · 873 阅读 · 0 评论 -
HDU 4416 Good Article Good sentence(后缀数组 求在只在某串中出现的子串数目)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4416这个题目我感觉不好写,各种出错,最后参考这篇博客的程序和思想才得以完成:http://hi.baidu.com/arosliu/item/ec421c23bf862ef951fd8769开始按照以前的后缀数组的写法,老是Run time error 后来改成上面链接的后缀数组写法就原创 2013-08-10 20:35:19 · 792 阅读 · 0 评论 -
初学后缀自动机
参考链接:http://blog.sina.com.cn/s/blog_7812e98601012cim.html后缀自动机和后缀数组一样,刚开始学的时候十分不好懂,学完之后觉得自己很厉害了,然后拿到题目就傻眼了对于字符串这里的很多算法的性质都一样,如果不能完全理解其构造的意义,那么是根本做不了题目的,例如KMP算法,开始学习的时候next函数是用来匹配用的,后来发现基本上考KMP的题原创 2013-08-09 21:29:59 · 743 阅读 · 0 评论 -
HDU 1841 Find the Shortest Common Superstring(KMP 理解 应用 求组合串的next值判断是否匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1841表示这个题目做起来还是有点意思的首先分析一下解这个题目要考虑的两种情况1、一个串在另外一个串中,那么结果就是两个串中长度长的哪一个2、一个串的头部是另外一个串的尾部,这里分两种情况(每个串都有一头一尾嘛)明白上面两点之后开始用KMP解题首先直观的普通解法是两个串相互前后拼接原创 2013-08-09 20:10:12 · 734 阅读 · 0 评论 -
HDU 4691 Front compression(后缀数组 LCA)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4691这个题目题目看错只能是TLE 或者MLE看错题目就是前面所有的插入的前缀,那么用后缀数组TLE用trie MLE,反正题目理解错了怎么也过不了其实正解就是和上面一个输入两种方法:后缀数组 结合RMQ 暴力水过用RMQ的时候注意一下,在初始化的时候n是要包括的在查原创 2013-08-21 09:44:51 · 738 阅读 · 0 评论 -
HDU 4622 Reincarnation(SAM 后缀自动机 求子串的不同子串个数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4622这个题目开始是用后缀数组来做的,但是这个题目对后缀数组时间卡的很紧,后来看解题报告说是用后缀自动机搞定的,想想也是CLJ出题怎么会没有后缀自动机呢其实这个题目字符串长度不算长2000,但是查询可以达到10000次,如果每次查询都重新建立后缀自动机来计算不同子串的个数的话会超时,原创 2013-08-19 21:12:38 · 2255 阅读 · 0 评论 -
POJ 1936 All in All(water)
题目链接:http://poj.org/problem?id=1936这题很水,留个足迹#include #include #include using namespace std;#define maxn 100010char first[maxn],second[maxn];bool find_ans(){ int i,j,k; j=0;原创 2013-08-05 18:32:58 · 566 阅读 · 0 评论 -
POJ 3080 Blue Jeans
题目链接:http://poj.org/problem?id=3080这个题目是瞎搞搞出来的,也就是枚举呗,这个题目很容易看出来是暴力,就那么点数据,所以直接暴力暴力的时候可以直接用串函数,也可以自己写开始我一直wa不知道为什么,后来直接删掉重写就OK 了最近几天简单题不想写(不过这个题目也是简单题),难题不想想,休息一天^_^#include #include #incl原创 2013-08-04 12:19:59 · 531 阅读 · 0 评论 -
HDU 1403 Longest Common Substring(后缀数组 最长公共子串)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1403题意:给定两个串,要求输出两个串的最长公共子串的长度解题思路:后缀数组,在height数组上做文章其实这个题目和上面两篇博客的算法思路基本上是一致的,首先把两个字符串拼接成一个字符串,在拼接之前记录下拼接的位置,方便后续处理完成之后二分答案,二分的过程中要判断每个当前要判断原创 2013-07-30 10:28:58 · 809 阅读 · 0 评论 -
HDU 3374 String Problem(KMP求周期+求串最大最小表示法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374这个题目还算是比较综合一点的,也并不是很难做,但是至少要知道两个O(n)的算法,因为这个题目给的是一百万的数据量,而且时间就是1s,如果不是O(n)及其以下的算法那么估计超时的可能性会比较大。这个题目的两个关键算法,第一个是线性时间求串的最小(最大)表示法,因为题目要求的第二个算法原创 2013-08-02 12:53:32 · 812 阅读 · 0 评论 -
POJ 1509 Glass Beads(SAM 求最小表示法)
题目链接:http://poj.org/problem?id=1509最小表示法有另外的方法,这里给的是用后缀自动机的求法把原串自身组合一下,然后建立这个组合串的后缀自动机,从根开始每次沿着最小的边走原串长度就可以了! 最后结果为什么会是这个printf("%d\n",p->val-len+1);?因为最终走到的位置是最小串的结尾,那么结果就显然了!PS:nq 写成原创 2013-08-24 10:18:31 · 839 阅读 · 0 评论 -
POJ 1016 Numbers That Count
题目链接:http://poj.org/problem?id=1016最讨厌用PE来坑人的题目这个题目很简单,但是想一次AC恐怕要注意些许细节,我栽在PE上了题目意思直接看例子肯好理解,然后就直接按照题目意思模拟就好了理清思路这个题目相对来说还是比较简单的!#include #include #include #include using namespace std;原创 2013-09-06 20:58:06 · 656 阅读 · 0 评论 -
HUST 1069 AntiVirus(AC自动机)
题目链接:http://acm.hust.edu.cn/problem.php?id=1609题目很好,数据很水,直接解压,解压长度为给定病毒中最长的就OK了但是实际是解压长度在0-50之间都能AC,也就是直接去掉压缩部分就可以了!#include #include #include #include #include using namespace std;#defi原创 2013-10-03 15:49:16 · 663 阅读 · 0 评论 -
HDU 2222 Keywords Search (AC 自动机入门)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2222这个题目很久以前写过,不过好久没接触AC自动机的题了,又拿过来熟悉一下!题目有一点要注意,也就是给的串可能会重复!这次写的代码貌似比上一次写的简洁多了~#include #include #include #include #include using namespa原创 2013-10-03 13:54:15 · 655 阅读 · 0 评论 -
URAL 1297 Palindrome(最长回文子串 )
这个题目现在是用manacher线性算法写的,后缀数组版本的还没实现,打算过两天搞定还是觉得这个算发搞定回文问题既好写又快#include #include #include using namespace std;#define MIN(a,b) (a<b?a:b)char str[2500];char rec[2500];int drome[2500];int main原创 2013-07-30 19:43:01 · 596 阅读 · 0 评论 -
POJ 1226 Substrings(strstr)
题目链接:http://poj.org/problem?id=1226如果真做的话用后缀数组还是费点事的,不过题目数据量不大,直接枚举+strstr水过!#include #include #include #include #include using namespace std;#define maxn 1000char str[500][maxn],tem[maxn原创 2013-10-02 18:08:59 · 679 阅读 · 0 评论 -
HDU 4763 Theme Section(KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763这个题目有点......,先是数据范围看错,一百万看成10万,果断后缀数组,RE之后发现错误,改数组,果断TLE后来想肯定是一个线性算法,只有KMP,无奈枚举首尾位置,KMP进行匹配AC!#include #include #include #include #includ原创 2013-09-30 09:39:33 · 697 阅读 · 0 评论 -
POJ 3294 Life Forms(后缀数组)
题目链接:http://poj.org/problem?id=3294题意:给定m个串,要求你求在在大于一半的串中出现串的最长长度,并输出该串,如果有多组同时输出(按照字典序)。其实这个题目还是后缀数组的经典做法,枚举长度,最后的字典序输出其实没必要考虑,因为在后缀数组的处理过程中本来就是按照后缀排好序的,所以求出来的结果一定是有序的,所以我们只要专注于程序的核心实现就好了后缀数组原创 2013-09-03 13:30:48 · 720 阅读 · 0 评论 -
HDU 4545 魔法串(water!)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4545这个题目没什么好解释的,在一个串中找另外一个串就行了,没什么难度#include #include #include #include #include #include using namespace std;#define maxn 1500char first[max原创 2013-09-09 10:44:30 · 789 阅读 · 0 评论 -
HDU 4080 Stammering Aliens(后缀数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4080这个题目知道后缀数组的估计都会做,但是想AC估计要wa个一两下才能AC,其实这个题目也没什么陷阱,就是后缀数组的基本处理方法二分枚举,但是这个要输出最后出现的位置其实还是比较简单的,但是要注意一个细节,在用height数组比较的时候可能会只计算后面的那个的位置,忽略的第一个的位置,所以原创 2013-09-02 11:00:08 · 808 阅读 · 0 评论 -
POJ 2185 Milking Grid(KMP 经典)
题目链接:http://poj.org/problem?id=2185这个题目其实难度不大,但是要想很顺利的做出来对kmp没有一定程度的理解还是不行的这个题目要求的是一个最小的矩形然后看看这个矩形的字符串扩展能不能形成整个大的矩形串,形成的大的矩形包含原来矩形也算首先这个矩形一定是在左上角这个是没什么疑问的,下面就是求循环节了,这个怎么求呢这里给出的方法是整体求kmp的next原创 2013-09-07 18:23:40 · 559 阅读 · 0 评论 -
POJ 1509 Glass Beads(字符串的最小表示法)
题目链接:http://poj.org/problem?id=1509这个题目开始以为是后缀数组,拼接同一个串然后求排名,这样来计算也没想到还有这么一个算法,可以直接求出字符串的最小表示方法,学习了,不过理解还不是很深刻这个算法实现起来比较简单,如果理解为就是这样,记住就行了,那还是比较好理解的但是如果真正想纠结于具体细节等还是比较绕人的!#include #incl原创 2013-08-02 11:53:24 · 828 阅读 · 0 评论 -
HDU 4618 Palindrome Sub-Array(最大回文子矩阵)
Palindrome Sub-ArrayTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 162 Accepted Submission(s): 72Problem Description A pali原创 2013-07-25 22:25:09 · 1059 阅读 · 0 评论 -
POJ 1816 Wild Words(trie 树上的DFS)
Wild WordsTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 4377 Accepted: 1142DescriptionA word is a string of lowercases. A word pattern is a string of原创 2013-07-22 22:17:06 · 993 阅读 · 0 评论 -
POJ 3630 Phone List(trie 前缀)
Phone ListTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 19045 Accepted: 6016DescriptionGiven a list of phone numbers, determine if it is consistent in原创 2013-07-23 08:50:20 · 632 阅读 · 0 评论 -
HDU 1800 Flying to the Mars(trie)
Flying to the MarsTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8081 Accepted Submission(s): 2618Problem DescriptionIn原创 2013-07-22 18:07:01 · 663 阅读 · 0 评论 -
HDU 3724 Encoded Barcodes(trie树)
Encoded BarcodesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1167 Accepted Submission(s): 402Problem DescriptionAll the bi原创 2013-07-21 21:12:36 · 788 阅读 · 0 评论 -
HDU 2896 病毒侵袭(AC 自动机)
病毒侵袭Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7480 Accepted Submission(s): 1972Problem Description当太阳的光辉逐渐被月亮遮蔽,世界失去了光明原创 2013-07-17 09:07:22 · 605 阅读 · 0 评论 -
POJ 1961 Period(KMP 求循环)
PeriodTime Limit: 3000MS Memory Limit: 30000KTotal Submissions: 11026 Accepted: 5082DescriptionFor each prefix of a given string S with N characters (each charact原创 2013-07-16 20:42:07 · 671 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace(KMP)
Cyclic NacklaceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1729 Accepted Submission(s): 755Problem DescriptionCC always b原创 2013-07-16 14:18:00 · 566 阅读 · 0 评论 -
POJ 2418 Hardwood Species(trie 树 MAP qsort)
Hardwood SpeciesTime Limit: 10000MS Memory Limit: 65536KTotal Submissions: 15439 Accepted: 6190DescriptionHardwoods are the botanical group of trees that have bro原创 2013-07-16 16:46:45 · 937 阅读 · 0 评论 -
HDU 2087 剪花布条(KMP)
剪花布条Problem Description一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条原创 2013-07-16 14:41:58 · 713 阅读 · 0 评论 -
POJ 1743 Musical Theme(后缀数组 求最长不重复子串)
对于后缀数组强烈建议看国家集训队 04年和09年的两篇关于后缀数组的论文后缀数组非常强大,但是这么强大的数据结构理解起来不是那么容易的,里面涉及到好多知识点,要想彻底理解后缀数组,表示需要一点功底才行对于后缀数组具体请看国家集训对09年和04年的两篇大牛关于后缀数组的论文,两篇结合起来看效果会更好,可能看第一第二遍的时候不是怎么理解这个是肯定的,相信那两个大牛写这两篇论文的时候原创 2013-07-29 14:30:17 · 690 阅读 · 0 评论 -
POJ 3261 Milk Patterns(后缀数组 重复出现K次字串的长度)
Milk PatternsTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 7956 Accepted: 3610Case Time Limit: 2000MSDescriptionFarmer John has noticed that the原创 2013-07-29 19:02:42 · 655 阅读 · 0 评论 -
POJ 4617 Palindrome(最长回文子串)
PalindromeTime Limit: 15000MS Memory Limit: 65536KTotal Submissions: 2617 Accepted: 956DescriptionAndy the smart computer science student was attending an algorit原创 2013-07-26 08:55:01 · 834 阅读 · 0 评论 -
HDU 3068 最长回文(manacher O(n)求回文算法)
最长回文Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5327 Accepted Submission(s): 1817Problem Description给出一个只由小写英文字符a,b,c...y原创 2013-07-25 18:34:13 · 1008 阅读 · 0 评论 -
HDU 3608 最长回文(扩展KMP)
最长回文Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5319 Accepted Submission(s): 1815Problem Description给出一个只由小写英文字符a,b,c...y原创 2013-07-25 14:59:32 · 1060 阅读 · 0 评论 -
HDU 2594 Simpsons’ Hidden Talents(KMP理解应用)
Simpsons’ Hidden TalentsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1658 Accepted Submission(s): 605Problem DescriptionHo原创 2013-07-24 08:45:01 · 649 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame(KMP 理解应用)
Seek the Name, Seek the FameTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 9735 Accepted: 4670DescriptionThe little cat is so famous, that many couples原创 2013-07-23 16:12:38 · 694 阅读 · 0 评论 -
POJ 2513 Colored Sticks(trie 欧拉通路 并查集)
这个题目只要想是欧拉通路那么基本上就搞定了判断偶拉通路就是度为奇数的点为0个或者2个用trie树来做检索为颜色编号工作然后用并查集判断一下图是否联通就基本上没问题了!#include #include #include using namespace std;struct trie{ trie *next[26]; int num; int sin原创 2013-07-24 17:23:49 · 675 阅读 · 0 评论