随笔分类 - 字符串
Hash,KMP,Trie树,AC自动机,Manacher,后缀数组,后缀自动机
摘要:KMP+双向链表 由题意易知解必须满足的条件是解既是前缀也是后缀,然后就把所有的解打上标记,建出一棵fail树,然后发现如果这个串能作为解的话就是它的相邻两个之间的距离差不能超过其长度。 然后就可以用双向链表维护这个,记录一个mx表示最大差值即可。 cpp include include inclu
阅读全文
摘要:模拟题 但是可以用STL快速判断一些东西。 可以枚举罪犯是谁,今天是周几,然后每次判断每个人的话是真的假的,然后判一下假的和不确定的加起来是不是可行。 比较坑的就是关于回车空格什么的要多注意。。。。 #include <iostream> #include <cstdio> #include <st
阅读全文
摘要:AC自动机+DP AC自动机NOIP考不考啊。。。 在AC自动机上做个DP。 设状态f[i]表示最远可以匹配到的i,然后在AC自动机上找就行了。 #include <iostream> #include <queue> #include <cstdio> #include <cstring> usi
阅读全文
摘要:正解:对于一个区间l,r,它的循环节长度一定是它的因数。 然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]。 然后每次询问的时候就把它的长度的最小质因子提出来。 BZOJ上都A了,然而LOJ上T了一个点。 //<!-- // :: // :;J7, :, ::;7: //
阅读全文
摘要:再次惨遭卡模数。 但是为什么自然溢出没有被卡。。。。。。。我好绝望啊 这道题思路就是枚举断点,然后看看这个断点左右两侧和哈希值都一样的话就是相似的。 然后就随便判一下即可。 希望大家不要被卡。。。用自然溢出就行了。。。。 #include <iostream> #include <cstdio> #
阅读全文
摘要:最小表示法就是一个字符串构成一个环,找以哪个点为开头字典序最小。 然后我们就可以用n2的算法愉快的做啦~实际上有O(n)的做法的,就是用两个指针扫,如果这两个位置的字典序相等,就一起往后,如果某一个大,就把那个指针指到大的那个的后面。 每次至少有一个指针往后移一个,复杂度就是线性的了。 (自己YY的
阅读全文
摘要:WA了一万次。。。。 然后发现多输出了一个空格 我#$%^& 启示我们输出字符的时候应该输出ASCII码看一下。。。。 然后本题可以用烤馍片算法,每次匹配完以后看看当前最后一位的nxt数组的值是多少,然后补齐到 lenT 。 下次匹配的时候直接从上次匹配过的最后一个开始匹配就行了。 #include
阅读全文
摘要:T1 打表出奇迹,发现结论为E(an)=n+1即可。 T2 正解应该是kmp,求出来nxt数组为偶数的就行了。但是蒟蒻了一下,并且受到200000的数据范围引导,写了个nlogn的做法,对于每个位置能延伸出去的长度,二分一下,check一下hash即可,荣幸成为全场除了写SA的老哥以外跑的最慢
阅读全文
摘要:很容易想到暴力的转移:f[i][j]表示较长串的前i个字母,最后和不吉利数字相同的已经有j个。价格数组g[j][k]表示第j个不吉利前缀转移到不吉利前缀k的方案数。然后kmp一下就能求得g数组。看到n是1e9,矩阵快速幂优化即可。 cpp include include include using
阅读全文
摘要:后缀数组是解决字符串问题的有力工具——罗穗骞 后缀数组是对字符串的后缀排序的一个工具, sa将排名为i的字符串的开头位置记录下来, rnk将开头位置为i的字符串的排名记录下来。 https://www.cnblogs.com/ECJTUACM 873284962/p/6618870.html 如代码
阅读全文
摘要:https://blog.csdn.net/creatorx/article/details/71100840 AC自动机就是一直跳fail边,然后找到整个要匹配的串就行了。 fail边:大概就是指向以当前节点表示的字符 为最后一个字符的 最长当前字符串的 后缀字符串的 最后一个节点(摘自上面的博客
阅读全文
摘要:复习一下kmp,结果发现真的需要复习。 本题很水,思路很明显,但是有个咸鱼kmp打错这也。。。sad 做两遍kmp,然后发现如果nxt的长度 include include using namespace std; const int N=1e7+5,mod=1e9+7; char s[N]; in
阅读全文
摘要:Manacher的题,较简单。 先manacher一下,找到每个回文串的长度,把长度为奇数的回文串统计一下,由于manacher,每个字母只会被统计一次,就不存在重复计算。看那个数据范围里面巨大的K很唬人,但是复杂度和这个K关系不大。(奇丑无比堪比wwb的代码) cpp //Writer : Hsz
阅读全文