Codeforces 235C】的更多相关文章

传送门 写的时候挺蛋疼的. 刚开始的时候思路没跑偏,无非就是建个SAM然后把串开两倍然后在SAM上跑完后统计贡献.但是卡在第二个样例上就是没考虑相同的情况. 然后开始乱搞,发现会出现相同串的只有可能是由一个串无限拼接构成的串,于是上了个KMP来搞循环串..然后就没有然后了 基本上一直处于改了这个错误后又被另一个错误卡着的状态,后来没办法了,翻题解.. 然后发现只需要在SAM的节点上开个标记就行了... 越学越傻啊... 至于为什么KMP会挂掉..求dalao评论指出 //Codeforces 2…
Some days ago, WJMZBMR learned how to answer the query "how many times does a string x occur in a string s" quickly by preprocessing the string s. But now he wants to make it harder. So he wants to ask "how many consecutive substrings of s…
[题目链接] http://codeforces.com/contest/235/problem/C [题目大意] 给出一个字符串,给出一些子串,问每个子串分别在母串中圆环匹配的次数,圆环匹配的意思是将该子串拆成两段再首位交换相接的串和母串匹配,比如aaab变成baaa,abaa,aaba再进行匹配. [题解] 根据母串建立SAM,一个字符串在母串中匹配的次数就是|Right(x)|, 我们将子串复制一份,在母串中匹配到的所有长度为大于len的|right|的总和就是答案. [代码] #incl…
题目大意: 给定一个字符串,接下来再给n个字符串,求原字符串中含有多少个当前给定字符串的循环同构体的字符串的个数 以初始字符串构建后缀自动机,在自动机上前进的时候,比如当前需要匹配的字符串为aba,到达某个状态点S 我们所希望知道的所有aba出现的次数,因为aba最终到达的是点S,其实可以理解为整个后缀自动机通过f(父指针)形成了一棵后缀树 而这个S是后缀树上的叶子节点,那么上方所有的父亲节点都包含这个S,我们只需要找到最顶端的能达到aba状态的根节点,在根状态上记录其下方出现此后缀总共出现的个…
原文链接https://www.cnblogs.com/zhouzhendong/p/CF235C.html 题目传送门 -  CF235C 题意 给定一个字符串 $s$ ,多组询问,每组询问的形式为一个字符串 $T$ ,问 $S$ 有多少个子串与 $T$ 循环同构.(如果 $S$ 有多个相同子串都同构,则算多次) $|S|\leq 10^6,\sum |T|\leq 10^6$ 题解 以后坚决不念诗了!中午作死念诗,下午就被一个傻逼错误续了 3 个多钟头. 做法: 给 $S$ 建一个 SAM…
题意 给出一个字符串s1和q个询问,每个询问给出一个字符串s2,问这个询问的字符串的所有不同的周期串在s1中出现的次数的和. 分析 对于s1建后缀自动机.对于询问的每个字符串s2,我们按照处理循环串的方法,将它长度乘二再复制一遍.然后根据s2在自动机上跑,当长度len=n的时候,就更新答案.因为要求统计的是不同的周期串,所以对于每个状态都需要打一个vis标记. #include <cstdio> #include <cstring> #include <iostream>…
Cyclical Quest \[ Time Limit: 3000 ms\quad Memory Limit: 524288 kB \] 题意 给出一个字符串为 \(s\) 串,接下来 \(T\) 个查询,枚举给出一个 \(t\) 串,求出 \(t\) 的所有循环子串在 \(s\) 串中出现的次数. 思路 对于每个查询串,因为要所有循环的子串,所以可以先把 \(t\) 串在复制一份到末尾,然后去求 \(LCS\). 如果在 \(p\) 节点查询到的 \(LCS==tlen\),那么 \(p\)…
题意: 给出一个字符串,给出一些子串,问每个子串分别在母串中圆环匹配的次数, 圆环匹配的意思是将该子串拆成两段再首位交换相接的串和母串匹配,比 如aaab变成baaa,abaa,aaba再进行匹配. 题解: 如何求出所有的循环串出现的次数呢? 先将S串放入后缀自动机 把查询串扩大一倍,然后在后缀自动机上去匹配, 只要匹配长度大于子串长度小于2倍子串长度的,必然对应这一种循环串 记录一下 // 每个节点子串出现的次数 统计答案即可 #include <set> #include <map&…
*在学习后缀自动机之前需要熟练掌握WA自动机.RE自动机与TLE自动机* 什么是后缀自动机 后缀自动机 Suffix Automaton (SAM) 是一个用 O(n) 的复杂度构造,能够接受一个字符串所有后缀的自动机. 它最早在陈立杰的 2012 年 noi 冬令营讲稿中提到. 在2013年的一场多校联合训练中,陈立杰出的 hdu 4622 可以用 SAM 轻松水过,由此 SAM 流行了起来. 一般来说,能用后缀自动机解决的问题都可以用后缀数组解决.但是后缀自动机也拥有自己的优点. 1812.…
*在学习后缀自己主动机之前须要熟练掌握WA自己主动机.RE自己主动机与TLE自己主动机* 什么是后缀自己主动机 后缀自己主动机 Suffix Automaton (SAM) 是一个用 O(n) 的复杂度构造.可以接受一个字符串全部后缀的自己主动机. 它最早在陈立杰的 2012 年 noi 冬令营讲稿中提到. 在2013年的一场多校联合训练中,陈立杰出的 hdu 4622 能够用 SAM 轻松水过.由此 SAM 流行了起来. 一般来说.能用后缀自己主动机解决的问题都能够用后缀数组解决.可是后缀自己…