----后缀自动机
sega_handsome
这个作者很懒,什么都没留下…
展开
-
SPOJ - LCS Longest Common Substring 后缀自动机
求两个串 的最长公共子串 后缀自动机sam 的模板题#include<bits/stdc++.h>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define sf scanf#define pf printf#define mem(a,b) memset(a,b,sizeof(a转载 2017-09-19 21:35:41 · 254 阅读 · 0 评论 -
Cyclical Quest CodeForces - 235C (后缀自动机 SAM)
题目大意:题目大意:给一个字符串S,再给一个字符串T,设T的长度为len,问T的循环串在S中出现的次数,这里循环串的定义是:对于一个长度为len的字符串,我们把它首尾相接,然后从任意位置开始走len步所得到的串我们叫做T的循环串。如abaa的循环串有 abaa,baaa,aaab,aaba。(注意如果重复只算一次。比如aaa的循环串只有一个aaa)参考http://blog.csdn.net/dy转载 2017-09-20 17:01:10 · 264 阅读 · 0 评论 -
hdu4641-K-string(后缀自动机)
https://vjudge.net/problem/HDU-4641 参考http://www.cnblogs.com/wust-ouyangli/p/5805461.html自己貌似写炸了。。还是用用别人的这种方式.f#include<cstring>#include<string>#include<algorithm>using namespace std;const int max转载 2017-09-20 20:07:29 · 541 阅读 · 0 评论 -
hdu6194 string string string sam或sa
题意:给你一个字符串,问这个字符串中有多少个子串出现了k次上一篇的简化版。。 不过这个人的代码很清晰 参考http://www.cnblogs.com/weeping/p/7503972.html据说sam的指针版会被卡。。看来还是要各种版本都会写才可以。。#include <bits/stdc++.h>using namespace std;char ss[100004];int ans;s转载 2017-09-20 20:58:48 · 212 阅读 · 0 评论 -
spoj 1812 LCS2(SAM+DP)
参考http://www.cnblogs.com/lidaxin/p/5198507.htmlspoj 1812 LCS2(SAM+DP)【题目链接】 http://www.spoj.com/problems/LCS2/en/【题意】 求若干个串的最长公共子串。【思路】 SAM+DP 先拿个串建个SAM,然后用后面的串匹配,每次将所有的匹配长度记录在状态上取min,然后对所有状态取max即答转载 2017-09-20 21:30:15 · 235 阅读 · 0 评论 -
hdu 4436 str2int (SAM)(待补)
参考:http://blog.csdn.net/u013654696/article/details/40661797给n个只包含数字的字符串, 问这n个字符串能分解为多少种不同的数字, 求出这些数字的和mod2012先把n个串用10连接起来, 然后构造sam。 然后计数的时候可以从拓扑序从小到大计数,(以前一直以为只能从大到小。。。), cnt[i]表示这个节点上有多少种数, sum[i]表示这个转载 2017-11-03 09:45:41 · 165 阅读 · 0 评论