bzoj 2780 [Spoj]8093 Sevenk Love Oimaster】的更多相关文章

目录 题意 思路 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个查询串.求每个查询串出现在了多少原串中. 题解 直接对原串建一个广义SAM,然后把每一个原串放到SAM上跑一跑,记录一下每一个状态属于多少个原串,用$size$表示.这样的话查询串直接在SAM上跑,如果失配输出0,否则直接输出记录在上面的$size$就好了. //minamoto #include<cstdio> #include<cstring> #include<iostream> using namespace std; #def…
给定n个串m个询问,问每个串在n个串多少个串中出现了. 构建广义后缀自动机,(就是把所有字符串的后缀自动机合并起来)其实只需要add的时候注意一下就可以了. 然后对于每一个串,跑一边匹配,到达了now点. 如果now等于零,那么无法匹配,为0 否则就是询问子树中属于不同的后缀的节点又多少个. 如果n的数目比较小,可以考虑O(nl)去树形DP 我们只能,用vector打上标记. 然后dfs序搞出来,然后就是区间不同数的计数问题,然后直接<HH的项链>这道题目一套就可以了. 这一题套一题确实很有趣…
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…
题目 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 ChuYuXun n time…
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…
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…
[BZOJ2780][SPOJ]Sevenk Love Oimaster(后缀自动机) 题面 BZOJ 洛谷 题解 裸的广义后缀自动机??? 建立广义后缀自动机建立出来之后算一下每个节点被几个串给包括了 然后读入串直接匹配就好了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm&…
BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) &= \sum_{i = 1}^{n}\frac{i \times n}{\operatorname{gcd}(i, n)}\\ &= n \times \sum_{i = 1}^{n}\frac{i}{\operatorname{gcd}(i, n)} \end{align*}\] 设\(…
SP8093 JZPGYZ - Sevenk Love Oimaster 题目大意 给定\(n(n\le 10000)\)个模板串,以及\(m(m\le 60000)\)个查询串(模板串总长\(\le 100000\),询问串总长\(\le 360000\)) 依次查询每一个查询串是多少个模板串的子串 先对模板串建广义SAM(每次新串las=1的那种) 然后考虑每个点都有一个所属的模板串,它可以对par树上到跟的那条链产生贡献,可以暴力加,据说均摊\(O(n\sqrt n)\),不清楚... 反…
http://www.spoj.com/problems/JZPGYZ/ 查询一个询问串在上面n个串中多少个串的子串. 后缀数组+主席树,常熟有点大... 建出广义SAM,利用parent树的dfs序,每次相当于询问parent树的一个子树中出现了多少不同的颜色. 可以用主席树统计,pre表示dfs序上与这个位置属于同一个串的前一个位置在哪,主席树询问区间内的pre小于这个区间左端点的个数(也就是不同的颜色数). 或者更方便地,把每个询问拆成parent树dfs序上的两个前缀和相减. 离线排序前…
题目链接 \(Description\) 给定n个模式串,多次询问一个串在多少个模式串中出现过.(字符集为26个小写字母) \(Solution\) 对每个询问串进行匹配最终会达到一个节点,我们需要得到这个节点所代表的子串出现在多少个模式串中. 建立广义后缀自动机.每次插入一个串,从root开始,对于SAM上每个节点维护cnt和bef,分别表示该节点代表的串出现在几个模式串中 和 该节点最近被哪个模式串更新过cnt. 对于bef[i]!=now的节点,++cnt[i],bef[i]=now:当模…
思路 可以用复杂度不对的做法水过去 相当于求parent树子树中的颜色种数,可以离线后树状数组(HH的项链,询问右端点排序之后维护last),dsu on tree,莫队都可以 但是也可以记录每个点上次被更新的原串(last[i]),然后通过fail向上更新 代码 #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <bits/stdc…
题目大意: 给你$n$个大串和$m$个询问,每次给出一个字符串$s$询问在多少个大串中出现过 好神的一道题 对$n$个大串建出广义$SAM$,建出$parent$树 把字符串$s$放到$SAM$里跑,找到能表示字符串$s$的节点$x$ 问题转化为在$parent$树中,$x$节点的子树内,有多少个编号不同的$endpos$节点 把树拍扁,转化为$dfs$序 不就是在序列上跑HH的项链么,离线树状数组维护一下就好 一个节点可能有多个不同串$endpos$标记,用$vector$存一下串的编号就行了…
BZOJ SPOJ 直观的想法是构建笛卡尔树(每次取最小值位置划分到两边),在树上DP,这样两个儿子的子树是互不影响的. 令\(f[i][j]\)表示第\(i\)个节点,放了\(j\)个车的方案数. 设\(v\)是\(i\)的一个儿子,对于子树部分的转移,有\[f'[i][j]=\sum_{k\leq j}f[v][j-k]f[i][k]\] 求完子树贡献后,对于\(i\)节点代表的矩形,设高度是\(h\)宽度是\(w\),有\[f'[i][j]=\sum_{k\leq j}f[i][j-k]\…
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…
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MBSubmit: 9280  Solved: 2421[Submit][Status][Discuss] Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文.   Input…
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MBSubmit: 5217  Solved: 1233[Submit][Status][Discuss] Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文. Input 第一…
2588: Spoj 10628. Count on a tree Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=2588 Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文. Inp…
2482: [Spoj1557] Can you answer these queries II Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 145  Solved: 76[Submit][Status][Discuss] Description 给定n个元素的序列. 给出m个询问:求l[i]~r[i]的最大子段和(可选空子段). 这个最大子段和有点特殊:一个数字在一段中出现了两次只算一次. 比如:1,2,3,2,2,2出现了3次,但只算一次,…
1982: [Spoj 2021]Moving Pebbles Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 130  Solved: 88[Submit][Status][Discuss] Description 2021. Moving Pebbles Two players play the following game. At the beginning of the game they start with n (1<=n<=10000…
2226: [Spoj 5971] LCMSum Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 578  Solved: 259[Submit][Status] Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n,n), where LCM(i,n) denotes the Least Common Multiple of the integers i a…
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2588 2588: Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MBSubmit: 3584  Solved: 835[Submit][Status][Discuss] Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个…