
串
文章平均质量分 82
gyarenas
这个作者很懒,什么都没留下…
展开
-
关于串的循环移动与最小覆盖几个问题
以下对于串的加法即连接操作,数乘n表示复制n次,|S|表示串S长度,先yy几个名词分子串:如果串S = k×S'(其中k>=1),则称S'为S的一个分子串。原子串:所有S'中长度最小的称为S的原子串,记为S*。覆盖串:如果串|S''| ×S''(其中k>=1)的前缀,则称S''为S的一个覆盖串。最小覆盖串:所有S''中长度最小的称为S的最小覆盖串,记为S^。例1:S=“abca原创 2015-01-04 21:25:46 · 725 阅读 · 0 评论 -
cheat (CTSC2012)
http://www.lydsy.com/JudgeOnline/problem.php?id=2806用特殊字符分隔每个“标准作文”,建SAM,对于每个询问串,先把询问串在SAM里跑一遍求出每个位置在“标准作文”的子串中出现的最长后缀,二分询问串长,然后单调队列优化dp用判别。#include #include #include #include #include #i原创 2013-09-03 19:20:56 · 1173 阅读 · 0 评论 -
喵星球上的点名
http://www.lydsy.com/JudgeOnline/problem.php?id=2754SA的多模板匹配,复杂度O(len1+log(len2)),len1为查找串长度,len2为模板串长度#include #include #include #include #include #include #include #include #include原创 2013-08-13 11:28:12 · 641 阅读 · 0 评论 -
Corporate Identity poj3450
SAM和SA都可以搞,练习一下SAM输出答案。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-08-06 14:43:23 · 563 阅读 · 0 评论 -
Ring hdu 2296
AC自动机+DP,这题尽量不要用string,我用string TLE了, string连接串时效率很低...#include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-05-20 21:54:47 · 906 阅读 · 0 评论 -
Lost's revenge hdu3341
AC自动机+状态压缩DP, 由于时限卡的比较死,进制高低位的选择不同可能会导致TLE(o(╯□╰)o),详细见注释#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-05-22 20:50:44 · 876 阅读 · 0 评论 -
Password Suspects LA4126
AC自动机+状态压缩递推,通过这题主要学习了一下输出答案的方法,DP的话输出状态比较好办,因为最优决策一般只是一条路径,所以记录一下前驱可以用线性的复杂度输出路径,而递推确是多条路径的合集,输出路径比较麻烦,需要根据最终状态向前递推,并把经过的路径节点全部标记出来,由于递推状态设计本身是不会有重复的路径的,所以最后再从头dfs一遍访问过的节点并且记录,当递归深度合适时,输出记录即可。原创 2013-05-24 20:36:06 · 1085 阅读 · 0 评论 -
Matrix Matcher UVA11019
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-05-14 10:40:03 · 619 阅读 · 0 评论 -
Generator hdu3058
trie图上递推+高斯消元, 卡精度题,代码挫了,C++过不了(long double也不行),G++可以过 , 对于结果比较大的数据会出错比如 8 1AAAAAAAAAAA这组数据我的代码在C++和G++输出就不同,还有就是有double中的运算尽量应尽量避免除法运算,精度损失较大 #include #include #include #include #i原创 2013-05-27 20:10:20 · 902 阅读 · 0 评论 -
Substring poj1226
此题数据很水,把每个串和其反向串全部连接起来,标记的时候别忘了反向串和原串串对应同一个串#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-05-31 20:49:12 · 609 阅读 · 0 评论 -
DNA repair hdu2457
AC自动机+DP#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-05-21 21:55:45 · 633 阅读 · 0 评论 -
b179: 空罐 Cans
链接:http://zerojudge.tw/ShowProblem?problemid=b179思路仿照hh犇,table[i][j][k]表示第i次转移后长度为j所在节点为k的串的种数分裂的基因直接用ch转移,而对于变短要分俩种情况讨论,当前长度小于等于所在节点的深度时使用fail指针转移(实际上当前长度小于节点深度这种情况是不存在的,所以只考虑等于的情况即可),这相当于把当前原创 2013-05-22 21:39:04 · 765 阅读 · 0 评论 -
Resource Archiver hdu3247
通过这题加深了对trie图的认识,trie图建好之后,匹配就不再需要fail指针了,在解决生成串类问题中,由于有禁止的包含的串,一定不能用fail指针进行转移,否则生成的串中有可能包含禁止串。 这道题关键在bfs求0点和resource串尾节点这些点俩俩之间最小距离,有俩种方法,第一种是只通过ch来转移,但这样求出来的最短路不一定是最短的,因为有些resource串可能是另一些resour原创 2013-05-23 20:52:27 · 1658 阅读 · 0 评论 -
[Ahoi2013]差异 bzoj3238
后缀数组+分治#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-10-08 20:07:01 · 1836 阅读 · 0 评论 -
Fuzzy Google Suggest acm@hit2888
模糊搜索相关, trie树的dfs+剪枝#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-10-10 10:33:32 · 719 阅读 · 0 评论 -
Reincarnation hdu4622 hash解法
http://acm.hdu.edu.cn/showproblem.php?pid=4622这题的ha原创 2014-04-05 10:38:19 · 1515 阅读 · 1 评论 -
相似字符串
http://msbop.openjudge.cn/bop2013/R1a_B/比较基础的卷积题目,从卷积的定义来看,例如f(x1)和g(x2)的卷积,就是把g(x2)以y轴翻转然后在左移x3个单位,然后俩个函数相乘再在定义域上积分(离散的是求和),x3就是卷积得到函数的自变量,离散的卷积就相当于多项式的乘法。顺便存一下模板。#include #include #inclu原创 2013-08-11 14:16:11 · 689 阅读 · 0 评论 -
Marlon's String zoj3587
后缀数组或扩展kmpSA做法#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2014-01-09 21:26:50 · 671 阅读 · 0 评论 -
关于维护AC自动机fail树的三道题目
由易到难e-Government CF 163Ehttp://blog.youkuaiyun.com/gyarenas/article/details/9315319GRE Words hdu 4117 http://acm.hdu.edu.cn/showproblem.php?pid=4117这题本来的做法是ac自动机优化dp,然而hdu加入了新的数据,估计构造了一些原创 2014-01-06 18:51:30 · 2775 阅读 · 0 评论 -
HDU4821
HASH后就是一个简单的线性统计了#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2014-01-04 11:47:30 · 2140 阅读 · 1 评论 -
阿狸的打字机 NOI2011
AC自动机是肯定的了,但关键是如何完成快速匹配,如果像普通的自动机那样在每个状态都通过fail转移累加的话肯定会超时的,所以需要一种新的方法,那就是维护fail逆向指针树的dfs序列,听上去挺麻烦的,先把所有fail指针逆向,这样就得到了一棵树(因为每个节点的出度都为1,所以逆向后每个节点入度为1,所以得到的是一棵树),而一棵树的先序dsf序列有一个很好的性质就是同任一棵子树的节点是连续排列的(前原创 2013-07-06 21:12:49 · 2644 阅读 · 0 评论 -
Good Substrings
http://codeforces.com/contest/316/problem/G3SAM上DP在某岛的博客上看到的,要义就是一个串的子串必然是该串某个后缀的前缀,所以从表示该状态的子串节点往后走必然会走到那个串的尾节点。#include #include #include #include #include #include #include原创 2013-12-01 12:06:14 · 762 阅读 · 0 评论 -
相似子串 bzoj3230
http://www.lydsy.com/JudgeOnline/problem.php?id=3230后缀数组#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-11-28 20:43:02 · 826 阅读 · 0 评论 -
Substitution Cipher spojSCYPHER
http://www.spoj.com/problems/SCYPHER/拓扑排序,要求是全序集#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-11-24 14:57:14 · 892 阅读 · 0 评论 -
AC's String HDU3973
http://acm.hdu.edu.cn/showproblem.php?pid=3973线段树维护HASH#include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-11-20 10:11:50 · 924 阅读 · 0 评论 -
CF 123D
http://codeforces.com/problemset/problem/123/Dsam应用#include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-10-26 15:49:00 · 901 阅读 · 0 评论 -
Cow Patterns poj 3167 (hash解法)
围观了叉姐的代码,hash对于解串类题目真的好灵活, 又涨姿势了 ==。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-09-24 20:17:51 · 981 阅读 · 0 评论 -
Generator zoj2619
这题和hdu3058要求差不多,只不过只有一个终止串,但正因为如此,生成的串长度期望也增加了,long double精度也不够了,之后网上看到解集全部是整数(为什么还没想通),所以可以用整数消元。#include #include #include #include #include #include #include #include #include #i原创 2013-05-28 22:08:53 · 795 阅读 · 0 评论 -
Searching the String zju3228
通过这题改正了以前一个重复模板匹配很低效的地方,见注释#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-05-21 22:05:54 · 608 阅读 · 0 评论 -
Substring spoj8222
ppt上的题目,这题主要是练习把每个状态的|right|求出来(还是不理解sam的性质,自己没想到咋求,看了爱神的代码),然后利用每个状态s的|right|更新f(s.len)即f(s.len) = max(|s.right|, f(s.len)),ppt上题解还要用f(i)更新f(i-1),虽然这一步实际上是不必要的,但这样简化了思维的复杂度,题解上用f(i)更新f(i-1)是考虑到如果长度为i原创 2013-06-20 11:25:39 · 784 阅读 · 0 评论 -
Good Article Good sentence HDOJ4416 (SAM解法)
这题比poj3415简单,只要记录一下到达每个状态的最大长度就可以了,关键还是用失配指针转移。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-06-20 17:01:51 · 613 阅读 · 0 评论 -
How many HDOJ2609
这题直接用最小表示法+trie就可以秒掉,但为了练习sam,就用牛刀杀次鸡 O(∩_∩)O~#include #include #include #include #include #include #include #include #include #include #include #include #include #include #i原创 2013-06-18 21:21:45 · 715 阅读 · 1 评论 -
Longest Repeated subsequence HDOJ2890
后缀数组,二分长度然后按height分组,每组排序后贪心选择即可#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-06-18 21:18:18 · 953 阅读 · 0 评论 -
Computer Virus on Planet Pandora HDOJ3695
AC自动机,要求模板串和其翻转串都是合法匹配,不用将模板串和其翻转串都加入到trie中,只要在匹配时把匹配串从正反俩个方向匹配一下就可以了,通过此题发现了以前AC自动机模板的一个错误(TLE到死),见代码吧#include #include #include #include #include #include #include #include #include #原创 2013-06-16 12:02:45 · 826 阅读 · 0 评论 -
Distinct Sub-matrix HDOJ4416
参照爱神的思路,先把矩阵的每行都hash,然后枚举子矩阵的宽度w,,按照从上到下,从左到右的顺序,把宽度为w的序列的hash值连在一起,注意不同的列起点之间用不同的字符隔开,然后统计有多少个不同的子串就有多少个不同的宽度为w的子矩阵,累加后就是答案#include #include #include #include #include #include #include原创 2013-06-16 11:47:52 · 706 阅读 · 0 评论 -
Boring counting HDOJ3518
枚举长度,然后按height分组看每组中的下标最大值与最小值只差是否大于等于当前枚举长度,如果满足则答案加1#include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-06-15 22:02:48 · 578 阅读 · 0 评论 -
Rescue the Rabbit HOJ4507
AC自动机+DP#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-06-14 22:02:05 · 614 阅读 · 0 评论 -
郑厂长系列故事——新闻净化 hdu4534
AC自动机+DP, 此题有俩个优化目标:最少字母使文章符合要求,并让加成分之和尽可能高,可以把俩个目标合并成一个,即让删除一个字母所获得的加分为一个很小的值(此题可以取-200000),这样优化的目标即变为是的加分最大,最后再把结果分离即可。#include #include #include #include #include #include #include #in原创 2013-06-02 21:53:00 · 2219 阅读 · 0 评论 -
BCD Code zoj3494
都是泪,看来以后要多做做数位DP题了,看了《浅谈数位类统计问题》感觉数位DP转化成树的思想真心不错,能简化思维的难度,可以很方便的处理一些细节问题(主要就是对于前导0的处理),用记忆化搜索实现起来比较方便,而且效率也比较高。记忆化搜索:#include #include #include #include #include #include #include #inc原创 2013-06-07 10:24:48 · 858 阅读 · 0 评论 -
循环串问题
首先了解一下最小覆盖串问题即求一个最小的子串使其能够通过复制的方法覆盖整个子串(不用恰好覆盖,可以多出来一块)例如: ABCDABCDAB 的最小覆盖子串为:ABCD假设字符串的存储空间为 str[0]~str[len-1], next数组是KMP算法的回溯数组,一个字符串的最小覆盖子串为str[0]~str[n-1],当且仅当n == len-next[len],证明见:http原创 2012-12-18 21:17:19 · 977 阅读 · 0 评论