字符串
outer_form
OI/ACM
展开
-
Manacher算法总结
Manacher算法算法总结第三弹 manacher算法,前面讲了两个字符串相算法——kmp和拓展kmp,这次来还是来总结一个字符串算法,manacher算法,我习惯叫他 “马拉车”算法。相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和拓展kmp算法有很多共通支出,所以在这里介绍一下。Manacher算法是查找一个字符串的最长回文子串的线性算法。转载 2016-01-14 14:10:11 · 419 阅读 · 0 评论 -
【伸展树(splay)】[JSOI2008][HYSBZ/BZOJ1014]火星人prefix
题目链接分析这道题有修改操作,显然不能使用后缀数组等数据结构。 我们可以用hash值来判断两个字符串是否相同,所以,我们可以用splay来维护出以当前字符为根的字符串的hash值,二分长度来求出LCQ(x,y)的值。代码这是top-down的splay#include<cstdio>#include<algorithm>#include<cstring>#define P 67#defin原创 2016-02-12 23:40:57 · 428 阅读 · 0 评论 -
【最长回文子串】【平衡树】[HDU5371]Hotaru's problem
题目 分析:用manacher求出以每个字符为中心的最长回文字串。 然后进行枚举。 若枚举到下标i,我们用两棵平衡树来存储在i前面,j+len[j]>=i的节点,其中一个按照j排序,另一个按照j+len[j]排序,根据第二棵平衡树的顺序进行遍历,将j+len[j]#include<cstdio>#include<algorithm>#include<queue>#include<ctim原创 2016-01-20 21:58:23 · 349 阅读 · 0 评论 -
【Trie】[CQOI2016]路由表
题目描述 对于一次查询的一种理解方式是:无视其它所有查询操作,只看添加操作。先清空路由表,然后执行第1到a-1次添加操作。之后再执行第a到b次添加操作过程中,统计匹配改变的次数。数据范围: 设一条表项的掩码长度为L,数据保证将目的地址转为二进制串后,末尾的32-L位均为0。分析在线地,每次在添加表项至路由表的时候,将该地址加入trie,然后在结束的节点标记上添加这个表项的时间。 对于每次询问,原创 2016-04-10 21:19:11 · 878 阅读 · 0 评论 -
【回文树】[APIO2014]Palindromes
题目链接分析用回文树,求出回文串的长度和出现的次数即可。代码#include#include#include#define MAXN 300000#define MAXC 26using namespace std;char s[MAXN+10];int n;long long ans;inline void Read(int &x){ static ch原创 2017-07-15 17:25:36 · 507 阅读 · 0 评论