bzoj2780】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=2780 (题目链接) 题意 给出很多主串和很多询问串,求一个询问串在多少主串中出现过 Solution 我们先构造出后缀自动机,然后把主串在后缀自动机上匹配,能够到达哪个状态就把那个状态的计数器${cnts++}$,表示可以匹配到一个主串,同时,这个状态的后缀也可以被这个主串匹配到,所以我们还要跳${parent}$去更新它的祖先.有可能祖先会被重复计算,所以还要打个标记.. 最后询问串就在后缀自动…
[BZOJ2780][SPOJ]Sevenk Love Oimaster(后缀自动机) 题面 BZOJ 洛谷 题解 裸的广义后缀自动机??? 建立广义后缀自动机建立出来之后算一下每个节点被几个串给包括了 然后读入串直接匹配就好了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm&…
[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…
Sevenk Love Oimaster bzoj-2780 Spoj-8093 题目大意:给定$n$个大串和$m$次询问,每次给出一个字符串$s$询问在多少个大串中出现过. 注释:$1\le n\le 10^4$,$1\le q\le 6\cdot 10^4$,$the\ total\ length\ of\ n\ strings\ \le 10^5$, $the\ total\ length\ of\ q\ question\ strings\le 3.6\times 10^5$. 想法:广…
BZOJ2780(广义后缀自动机,set启发式合并) 题面 自己找去 HINT 就是给多个文本串,然后每次查询的时候问你这个串在多少个文本串中出现过.因为多个文本串,那么直接就往广义后缀自动机上思考啊,我们在每个节点上开个set记录一下在哪些文本串上出现过,最后查询的时候就是看\(set[u].size()\) 启发式合并 因为每个父亲节点表示的子串都是儿子节点的后缀,所以儿子出现过的文本串,他爹也都出现过,那么就从叶子节点向上启发式合并就好了 #include<bits/stdc++.h>…
0.题意:给定N个原始字符串S,M次查询某个特殊的字符串S'在多少个原始串中出现过. 1.分析:这个题我们第一感觉就是可以用后缀自动机来搞,然后我们发现不是本质不同的字串..求出现过的次数,也就是说多次出现只算一次...然后我们依旧用建立后缀自动机,然后我们观察到询问是可以离线的..然后冷静一下QAQ--好了..询问可以离线后,我们对这个树形结构求一下dfs序,然后我们就可以把树上的询问变成一个序列的区间查询,然后就变成了BZOJ1878HH的项链..具体怎么搞呢?我们可以将询问排序,然后离线的…
题目 传送门 Sol 就是广义\(sam\) 然后记录下每个状态属于哪些串,开\(set\)维护 \(parent\)树上启发式合并一下就好了 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; IL int Input(){ RG int x…
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 talk with ChuYuXun.     Oimaster talked with Ch…
题意 给出你n个字符串和q个查询,每个查询给出一个字符串s,对于每个查询你都要输出这个字符串s在上面多少个字符串中出现过. 分析 广义后缀自动机的裸题.建好SAM以后再跑一遍得到每个状态的ocu和las.然后对于每个查询的字符串,跑到那个状态然后输出那个状态的ocu就可以了. #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespac…
bzoj luogu 题面 给定n个模板串,以及m个查询串. 依次查询每一个查询串是多少个模板串的子串. sol 广义后缀自动机裸题? 先建出\(SAM\),然后记录一下每个节点分别在多少个模板串里出现过. 对于询问直接在\(SAM\)上跑匹配就行了. code #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace std; cons…