BZOJ3277 串
传送门
题目描述
字符串是oi界常考的问题。现在给定你$n$个字符串,询问每个字符串有多少子串(不包括空串)是所有$n$个字符串中至少$k$个字符串的子串(注意包括本身)。
输入输出格式
输入格式:
第一行两个整数$n$,$k$。
接下来$n$行每行一个字符串。
$n,k,l \le 100000$
输出格式:
输出一行$n$个整数,第$i$个整数表示第$i$个字符串的答案。
输入输出样例
输入样例:
3 1
abc
a
ab
输出样例:
6 1 3
分析
广义$SAM$模板题(应该是)。
不知道为什么,用了快读读数字,再用cin读string就爆炸了。
参考资料
广义$SAM$
dwjshift的 用SAM建广义后缀树 提供在线和离线建法。话说这篇资料里提到的不在Trie上建$SAM$是怎么做的???
wangzhen_yu的 广义后缀自动机 提供很好的例题及代码讲解。以前不懂什么叫进行内容更新,菜啊
phile的 关于广义后缀树(多串SAM)的总结
本题
自为风月马前卒的题解 主要参考题解,这篇题解是枚举前缀的后缀(即子串)进行内容更新,而不是插入时更新,换句话说,这篇题解是从上至下更新,而不是一般的插入时从下至上更新。
clover_hxy的 题解 这篇题解是在建自动机的时候统计的每个状态的出现次数,最后求答案时连边跳,不过没看懂其中的mark数组是干什么的。
代码
1 |
|