后缀自动机
bestjerry007
这个作者很懒,什么都没留下…
展开
-
2019年icpc徐州站L、Loli, Yen-Jen, and a cool problem
传送门 广义SAM模版题 记录一下每个点的父亲节点,每个点对应的状态节点,然后跑广义SAM,统计下数量,跳一下fail边就可以了。 #include <bits/stdc++.h> using namespace std; const int maxn = 3e5 + 150; const int kind = 26; typedef long long ll; int tot1 = ...原创 2019-12-08 22:18:01 · 626 阅读 · 0 评论 -
牛客SAM总结
传送门 TJOI2015弦论 对于一个给定长度为N的字符串,求它的第K小子串是什么。 (位置相同和位置不同的贡献不定) 利用了计数排序的思想,在统计数量时,为了避免漏掉和增多,在统计时候 如果我们计算sum[fa[i]]+=sum[i]sum[fa[i]]+=sum[i]sum[fa[i]]+=sum[i]时,必须保证i已经统计完毕,根据SAM的性质len[fa[i]]小于len[i],所以可以根...原创 2019-11-02 11:20:12 · 162 阅读 · 0 评论 -
2019牛客多校第四场I string(SAM PAM)
题目描述: 给出一个字符串 求该字符串本质不同且不互为反串的子串的数目。 abac abac,b,a,ab,aba,bac,ac,c ab和ba互为反串只算一个 这个题目是SAM+PAM的板子题 SAM有两种使用的方法。 一: 输入原串然后输入一个特殊字符,然后输入原串反串。 这种我们在计算时候 ans=(sam.sum−1LL∗(len+1)∗(len+1)+p)/2ans=(sam.sum-1...原创 2019-11-01 19:32:40 · 169 阅读 · 1 评论 -
洛谷P4081(SAM fail树上dfs染色)
luogu P4081 感觉不到黑题的难度,做完这道题目,对SAM添加字符操作有了更加深刻的理解。 题目描述: 给你一个整数n,然后给你n个串,要求求出n个串每个的只属于其的本质不同的非空字串的数量。 所有串的总长度不超过1e5,n不超过1e5 不知道每条串的最大长度,1e5*1e5的数组太大 可以用一个1e5的数组存 然后记录下每条串的长度 如果想用SAM来做这道题目我们要清楚SAM的工作原理 ...原创 2019-11-01 11:26:26 · 157 阅读 · 0 评论 -
HDU 6583Typewriter(SAM+DP)
hdu6583 题目描述: 给定一个字符串和两个数字p、q 两种操作 打印一个字符花费为p 打印一个已经打印出来的串的子串 花费为q 输出打印给出字符串的最小花费 思路: 开始以为是贪心 每次能打印子串就打印子串 但是后面发现这种方法是不对的 比如下面的例子: aaaaaa 8 9 贪心的答案 8(a)+8(a)+9(aaaa)+9(aaaaaa)=34 正确的答案 8(a)+8(aa)+8(aa...原创 2019-10-30 14:44:45 · 227 阅读 · 0 评论