随笔分类 - 字符串 后缀数组
摘要:【题意】求最长的出现至少k次的子串。 【算法】后缀数组+单调队列 【题解】求出所有LCP,然后SA上每k个找一个最小值,取所有最小值中的最大值。 移动区间最小值,显然可以用单调队列优化。 注意:队列左闭右开时,访问队尾一定要tail-1。 求LCP时,只能按字符串顺序求才满足O(n)的规律。 #in
阅读全文
摘要:【算法】后缀数组 【题解】后缀数组 由于m太大,先离散化。 然后处理SA和LCP。 最后用单调队列处理即可。 注意实际上队列头尾长度限制是K-1. 删队尾不要删过头 i≥K才能开始统计答案。 #include<cstdio> #include<algorithm> #include<cstring>
阅读全文
摘要:【算法】后缀数组 【题解】把数组复制一遍然后SA处理即可。 后缀数组 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=300010; int sa[maxn],bas
阅读全文
摘要:把字符串原样复制一遍放在后面是惯用套路,此时字符串数组开两倍! ★字符串算法的核心是构造失配指针! 【字符串哈希】 双蛤习取模保险,毕竟连自然溢出都是能卡的…… 例题:【CodeForces】961 F. k-substrings 字符串哈希+二分 用于O(1)判断两个字符串是否相等:对于s[i~j
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文