目录 题意 思路 AC_Code1 AC_Code2 AC_Code3 参考 @(bzoj 2780: [Spoj]8093 Sevenk Love Oimaster) 题意 链接:here 有\(n\)个大串\(s\)和\(m\)个询问,每次给出一个字符串\(t\)询问在多少个大串中出现过. \(1\le n\le 10000,1\le m\le 60000,\sum|s|\le 100000,\sum |t|\le 360000\) 思路 初步分析 对\(n\)个串建广义后缀自动机(每个串插…
全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries + BIT 就行了.时间复杂度O(N log N). 速度垫底了QAQ 你们都会SAM.... ---------------------------------------------------------------------- #include<cmath> #include<c…
JZPGYZ - Sevenk Love Oimaster     Oimaster and sevenk love each other.       But recently,sevenk heard that a girl named ChuYuXun was dating with oimaster. As a woman's nature, sevenk felt angry and began to check oimaster's online talk with ChuYuXun…
LINK:Sevenk Love Oimaster 询问一个模式串在多少个文本串中出现过. 考虑广义SAM 统计这种数量问题一般有三种做法. 一种 暴力bitset 这道题可能可以过? 一种 暴力跳parent 复杂度多乘根号. 一种 线段树合并 乘个log. 最简便的 不容易T的首选第二种方法. const int MAXN=100010<<1; int n,m; int last=1,cnt=1; int vis[MAXN],sum[MAXN]; char a[MAXN]; struct…
Description Oimaster and sevenk love each other. But recently,sevenk heard that a girl named ChuYuXun was dating with oimaster. As a woman's nature, s evenk felt angry and began to check oimaster's online talk with ChuYuXun. Oimaster talked with Ch u…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3277 https://www.lydsy.com/JudgeOnline/problem.php?id=3473 学习的博客:https://www.cnblogs.com/HocRiser/p/9580478.html 广义后缀自动机有两种写法,这里写的是 trie 树的那种. 大意就是每个串从自动机的根开始走, 1.如果存在 q = go[p][w] ,且 l [q] == l [p]…
给定n个串m个询问,问每个串在n个串多少个串中出现了. 构建广义后缀自动机,(就是把所有字符串的后缀自动机合并起来)其实只需要add的时候注意一下就可以了. 然后对于每一个串,跑一边匹配,到达了now点. 如果now等于零,那么无法匹配,为0 否则就是询问子树中属于不同的后缀的节点又多少个. 如果n的数目比较小,可以考虑O(nl)去树形DP 我们只能,用vector打上标记. 然后dfs序搞出来,然后就是区间不同数的计数问题,然后直接<HH的项链>这道题目一套就可以了. 这一题套一题确实很有趣…
题目大意:给出n个原串,再给出m个查询串.求每个查询串出现在了多少原串中. 题解 直接对原串建一个广义SAM,然后把每一个原串放到SAM上跑一跑,记录一下每一个状态属于多少个原串,用$size$表示.这样的话查询串直接在SAM上跑,如果失配输出0,否则直接输出记录在上面的$size$就好了. //minamoto #include<cstdio> #include<cstring> #include<iostream> using namespace std; #def…
AC自动机比较简单,把询问串做成AC自动机然后模板串边跑变更新即可 SAM是把模板串做成广义SAM,然后每个节点存有几个模板串经过,具体方法是每次更新暴力向上跳直到有时间戳我不会证为什么时间复杂度是对的,沿途更新个数,查询的时候直接匹配到最后的点然后输出个数即可 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=400005; int n,m,fa…
[BZOJ2780][Spoj]8093 Sevenk Love Oimaster Description Oimaster and sevenk love each other.     But recently,sevenk heard that a girl named ChuYuXun was dating with oimaster.As a woman's nature, sevenk felt angry and began to check oimaster's online t…