
字符串
hohotiger
这个作者很懒,什么都没留下…
展开
-
HDU-1075-What Are You Talking About
What Are You Talking AboutTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others)Total Submission(s): 21918 Accepted Submission(s): 7305Problem Descriptio原创 2017-03-19 11:16:32 · 239 阅读 · 0 评论 -
后缀数组 魔板
为什么一开始要再字符串末尾多算个0呢 因为当开始分关键字比较的时候 最后要组成两个 字符所以要多个0 什么你有问我为什么填0 因为0小啊 先处理呗 虽然 sa是根据每个字符确定的大小 也就是排布的每个字符的排名 但是在初次求第二关键字排序的时候 可以使用sa的结论 首先吧sa后面的0排到最前面 那么0的数量 也就是从n-j到n开区间 都是0作为第二关键字的区域 也就是这句话f原创 2017-09-15 17:37:37 · 202 阅读 · 0 评论 -
AC自动机模板
const int maxn = 1000000;struct Aho{ struct state{ int next[26]; int fail,cnt; }st[maxn]; int size; queue<int>q; void init(){ for(int i=0;i<maxn;i++){原创 2017-09-20 18:58:25 · 161 阅读 · 0 评论 -
CodeForces - 888C K-Dominant Character 思维
题意找到在整个字符串中 所有以k长度的子串中的公共串至少长度为1的字符串 求出这个K的最小值是多少 分析每个子串都有的至少长度为1的公共子串 这里我们要求k的最小 那么不如就把公共串的长度考虑为1 因为如果存在一个公共串长度为k>1的串 那么他必然满足k=1时的解 所以这里不如简化问题 统计下每个字符的最长距离就可以了 求出所有出现过的字符的最长距离中的最小值 复杂度O(n)#include<原创 2017-11-18 13:35:15 · 316 阅读 · 0 评论 -
Crusaders Quest ZOJ - 3983 构造|思维
题意给我们一个字符串 其中只有a,o,g 当三个相同字符连在一起时释放大技能 我们可以消除任意连续数量的字符 问我们最大的释放大技能的数量是多少分析首先答案只能是 1 2 3 如果这个字符串中存在连续三个的我们可以直接消去 删掉 3个的情况就是三个通过删除的过程中可以形成或是已经就是三个的情况 直接删除 当我们在构造一个字符连着的三个时 我们需要删除这个字符中间的字符 那么如果我们要寻原创 2017-11-18 15:12:08 · 674 阅读 · 0 评论 -
KMP
kmp字符串匹配算法 相对于bruteforce O(n*n)匹配 kmp只需要O(n)复杂度就可以找到目标串中模式串的位置我们看对于一个字符串 我们其实不需要一个一个字符地去扫描 我们可以利用模式串本身的信息去完成kmp可以用来解决循环周期一类的问题 也可以用来求匹配位置 如果字符串中存在周期串 那么这个串中必定是前n-1个周期 和后n-1个周期匹配kmp分为两部分 先求出next数组原创 2017-11-05 08:34:41 · 289 阅读 · 0 评论 -
Trie总结
Trie 树即为字典树 这个树可以把所有我们要在文本中所查询的前缀都记录下来 当我们拿到一个文本串 需要从里面找出所有前缀串的数目我们就可以用这个结构 拿着我们的文本到这个树里面走一走就得到有多少个前缀了我们来看 当我们拿到一个前缀 不断地把这个前缀插入到树中 对每一个节点 可以连到26个分节点去 这个树具体有两个操作 一个是add操作 还有一个就是匹配操作 Trie的头结点是空的原创 2017-11-05 19:57:05 · 163 阅读 · 0 评论 -
HDU-1251 统计难题 map写法
#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<map>using namespace std;map<string,int>n;char a[12];int main(){ while(*gets(a)){ n[a]++; for(int i原创 2017-11-05 20:18:28 · 368 阅读 · 0 评论