=====字符串=====
文章平均质量分 78
SIO__Five
这个作者很懒,什么都没留下…
展开
-
HDU 4821 String
String 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4821 题目大意: 给定一个字符串(最长10^5)。从中选一个长度为 m * l 的子串,要求该子串能拆分为m个长度为 l 的一一不同的串。问有多少种取法。 解题思路: 比赛的时候,没有将串按照模 l 之后分类,导致TLE。。 字符串的哈希为:a[i原创 2014-07-23 15:18:48 · 957 阅读 · 0 评论 -
字符串总结
字符串总结原创 2014-08-15 11:36:20 · 807 阅读 · 0 评论 -
POJ 2778 DNA Sequence (AC自动机 + dp)
DNA Sequence 题意:DNA的序列由ACTG四个字母组成,现在给定m个不可行的序列。问随机构成的长度为n的序列中,有多少种序列是可行的(只要包含一个不可行序列便不可行)。个数很大,对100000取模。 思路:推荐一个博客,讲的非常清楚。 这种题目,n很大,首先想到的就是用矩阵来优化。那么如何构造转移方程呢:首先建立一棵Trie,然后按照AC自动机的方式构造fail指针,然后原创 2014-08-20 00:56:45 · 1211 阅读 · 0 评论 -
HDU 2243 考研路茫茫――单词情结 (AC自动机 + dp)
HDU 2243 考研路茫茫――单词情结 题意:给定一些词根,如果一个单词包含有词根,则认为是有效的。现在问长度不超过L的单词里面,有多少有效的单词? 思路:这道题和POJ 2778 是同样的思路。POJ 2778是要找出长度为L的单词里面有多少无效的单词。那么根据同样的方法构造矩阵,然后所有无效的单词个数为 A + A^2 + ... + A^l 个。而所有单词的个数为26 + 26原创 2014-08-20 16:10:01 · 1344 阅读 · 0 评论 -
AC自动机
AC自动机 AC自动机是KMP和Trie的结合,主要处理多模板串匹配问题。下面推荐一个博客,有助于学习AC自动机。 NOTONLYSUCCESS 这里还有一个Kuangbin开的比赛,大家也可以做一下,加深对算法的理解。 下面是比赛中的题目,采用了notonlysuccess的模板。 HDU 2222 Keywords Search 题意:最裸的模板题,给定一些模原创 2014-08-19 22:14:50 · 1109 阅读 · 0 评论 -
LA 3942 Remember the Word (Trie)
Remember the Word 题目:链接 题意:给出一个有S个不同单词组成的字典和一个长字符串。把这个字符串分解成若干个单词的连接(单词可以重复使用),有多少种方法? 思路:令d[i]表示从字符i开始的字符串(后缀s[i..L])的分解数,这d[i] = sum{d(i+len(x)) | 单词x是其前缀}。然后将所有单词建成一个Trie树,就可以将搜索单词的复杂度降低原创 2014-08-12 20:30:30 · 921 阅读 · 0 评论 -
UVA 11732 strcmp() Anyone? (Trie)
strcmp() Anyone? 题意:输入n个字符串,两两调用一次strcmp(),问字符比较的总次数是多少? 考虑strcmp()的实现如下: int strcmp (char *s, char * t) { int i; for (i = 0; s[i] == t[i]; i++) if (s[i] == '\0') return 0; return s[i] - t[原创 2014-08-13 15:38:10 · 1210 阅读 · 0 评论