随笔分类 -  字符串

摘要:史上最易懂的后缀自动机讲解!独创理解思路还有例题讲解~ O(nlogn) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=100010; int wa[N],wb[N],wv[N],wss[ 阅读全文
posted @ 2021-07-30 15:28 棉被sunlie 阅读(34) 评论(0) 推荐(0)
摘要:题链 维护两个数组v1[],v2[],v1[]用于标记,v2[]用于记录v1的后缀和,对于一个询问,如果在字典树上向下查找直到查找不到时,此时答案就是访问到的v1[]的和,如果查找完了,也就是说字典树上还有比询问更长的串,则答案也是访问到的v1[]的和,但是得加上此时的后缀和v2[],因为当前v2[ 阅读全文
posted @ 2021-05-14 20:20 棉被sunlie 阅读(68) 评论(0) 推荐(0)
摘要:题链 字典树模板题; 总结:字典树数组长度应大于等于所有字符串总和长度,数组最后一维取决于字符集的大小; #include <bits/stdc++.h> using namespace std; #define LL long long #define ll long long #define U 阅读全文
posted @ 2021-05-14 18:17 棉被sunlie 阅读(118) 评论(0) 推荐(0)
摘要:题链 OI-wiki 字符串以 1 为开头写的 #include <bits/stdc++.h> using namespace std; #define LL long long #define ll long long #define ULL unsigned long long #define 阅读全文
posted @ 2021-05-12 14:27 棉被sunlie 阅读(57) 评论(0) 推荐(0)
摘要:题链 暴力想法就是求前缀数组,然后倒着一步步得跳j指针直到长度小于当前总长一半,最后把j指针跳到0的次数总和就是答案,当然会T,例如全是'a' 在求前缀数组时可以递推记录当前长度有多少个相同前后缀的个数,此时不管前后缀区间是否重叠 用与求前缀数组同样的想法去跳指针j,每次都得出不超过长度一半的最长前 阅读全文
posted @ 2021-03-25 14:47 棉被sunlie 阅读(26) 评论(0) 推荐(0)
摘要:题链 求出模式串的前缀数组后,一个个读入文本串字符,遇到与模式串相同的字串(前缀值与模式串长度len相等),弹出栈顶len个前缀函数值,相当于消去这len个长度的字符的影响,以栈的形式存储答案与文本串的前缀数组 #include <bits/stdc++.h> #include <iostream> 阅读全文
posted @ 2021-03-25 13:39 棉被sunlie 阅读(38) 评论(0) 推荐(0)
摘要:#前言 学自OI-wiki 前缀函数与kmp ##第二个优化 从第二个优化开始我看的时间比较久,如图部分 其中公式 看了挺久,主要是第二个部分到第三个部分,关于这个转换,在例图展示中如 因为 s[0...3] == s[(i-3)...i] && s[0...1] == s[(i-1)...i],所 阅读全文
posted @ 2021-03-17 16:38 棉被sunlie 阅读(80) 评论(0) 推荐(0)
摘要:#前言 均使用unsigned long long溢出自动取模; 非unsigned long long版本:OI-wiki 字符串hash #详解 #模板 ##预处理进制B的次方 void init_bp(){ bp[0][0] = bp[1][0] = 1; for(int i=1;i<=hs; 阅读全文
posted @ 2021-03-16 15:46 棉被sunlie 阅读(105) 评论(0) 推荐(0)