SAM
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
SAM学习小记
手玩了一个晚上,终于发现自己的sam爆栈了。。。 @samjia2000 不是玩你233前言SAM——suffix aotu-machine 它(Ta?)是有限状态自动机(FSA)的一种(废话)。 它可以实现以O(n)的状态存下一个字符串的所有字串。 因为它把那些本质相同的字串都映射到一个状态上了。构造我们记RightsRight_s表示子串s在原串中出现的结束位置的集合。 很显然Righ原创 2016-08-17 22:40:05 · 765 阅读 · 0 评论 -
SAM建立模板
int extend(int x,int p) { int np=++tot;sam[np].len=sam[p].len+1; while (p&&!sam[p].son[x]) sam[p].son[x]=np,p=sam[p].pr; if (!p) sam[np].pr=1;else { int q=sam[p].son[x]; if原创 2016-08-17 22:40:56 · 1549 阅读 · 0 评论 -
【ZJOI2015】诸神眷顾的幻想乡
此生无悔入东方,来世愿生幻想乡。Description(⊙v⊙)嗯,既然是我大东方的题,那么还是贴原题吧。。 Solution对于题面最下面那一行,你看完之后的第一反应是什么? 陈老师语文真好~ 反正我是被坑了。。 生无可恋脸.jpg 不是度数<=20,而是叶子个数<=20!!! 那么我们发现,对于每个叶子我们都可以以它为根然后建一棵trie树。 那么我们的树上的子串就变成了tri原创 2016-08-18 11:41:19 · 1788 阅读 · 0 评论 -
【GDOI2017模拟9.10】子串
Description给出n个字符串Si,m次询问,第i次询问Sli~Sri这些字符串中有多少个是字符串pi的母串。 ∑|Si|,∑|pi|<=5∗105\sum{|Si|},\sum{|pi|}<=5*10^5Solution看到多串匹配就想到了AC自动机。 然而辛辛苦苦打完之后发现只有自己傻傻地写的那么辣鸡。 在线OrzSAM和SA分块做法。显然我们需要离线回答。 把所有的pi建一棵AC原创 2016-09-10 16:51:25 · 673 阅读 · 0 评论 -
[LOJ6377]「是男人就过8题——Pony.ai」AStringGame
Description 最近 Alice 和 Bob 在玩一个和字符串有关的游戏。在游戏开始之前,他们会准备 n个字符串 s1~sn 和一个模板串 t, 保证这 n 个字符串都是 t 的子串。 游戏开始后,他们会轮流地执行以下操作,由 Alice 先手。 从 n 个字符串中选择一个字符串 si 在 si 末尾增加一个字符; 得到的新字符串需要是 t 的子串; 如果上述...原创 2018-05-22 17:15:51 · 1515 阅读 · 0 评论 -
[UOJ#395][NOI2018]你的名字
Description 给出字符串S,每次询问字符串T有多少本质不同的子串不是S[l…r]的子串 |S|,|T|<=10^5 Solution 我太菜了考场68分都写挂了_ (:з」∠) _ 其实这道题并没有看上去那么难 预处理出lim[i]表示T的前缀i的最长后缀,满足T[i-lim[i]+1,i]是S的子串 考虑询问是1~n的情况,我们只需要在S的SAM上跑就可以得出这个东西 如果询问是...原创 2018-10-24 09:22:36 · 819 阅读 · 1 评论 -
【NOI2019五校联考2019.3.5】Second
Description 给出一个长度为n的字符串S,你需要对k1~kn赋值,满足∑ki=1,使得max(kj*lcp(s[i…n],s[j…n])最小,求出这个最小值 |S|<=10^6 Solution 比赛时一直在想怎么解方程真是菜坏了 先把后缀树弄出来,显然有祖先后代关系的两点不会同时有值 设F[x]表示x为根,内部已经分好权值和为1的最小值。 考虑从儿子怎么转移,设儿子的F值分别为f...原创 2019-03-05 15:48:03 · 405 阅读 · 0 评论