||__字符串__||
CaprYang
这个作者很懒,什么都没留下…
展开
-
Theme Section HDU - 4763
题解 题目大意 给你一个主串S 要求找到一个子串E满足S=EAEBE AB串可以为空 题目样例水了 使用kmp将next数组求出 vis数组记录中心子串满足的最长长度 记录的条件是如果以当前位置结尾长度为j作为子串E前缀和后缀有足够空间则记录 最后扫一遍vis得出答案 AC代码 #include <stdio.h> #include <bits/stdc++.h> usin...原创 2018-10-22 17:11:07 · 377 阅读 · 0 评论 -
DNA Sequence POJ - 2778 AC自动机 矩阵快速幂
题解 给m个长度10以内的病毒串 问长度为n的主串且不匹配任意一个病毒串的有多少个 m最大10所以节点数不超过100 利用AC自动机建图 建立邻接矩阵表示从节点i到节点j能转移的字符数量 除去字符结束节点和fail指针路径上是结束节点 通过N个邻接矩阵相乘即可得到i到j走N步的方案数 将0到i求和即为答案 因为N过大需要用矩阵快速幂求解 AC代码 #include <stdio.h> ...原创 2018-10-25 23:44:54 · 388 阅读 · 0 评论 -
Milk Patterns POJ - 3261 后缀数组
题解 题目大意 给你一个长度为n的序列 找出序列出现K次以上的最长后缀 使用后缀自动机将所有后缀排序 获得height数组 用set区间求最小值遍历一遍即可 AC代码 #include <stdio.h> #include <iostream> #include <set> #include <algorithm> using namespace s...原创 2018-10-26 00:37:43 · 419 阅读 · 0 评论 -
病毒侵袭 HDU - 2896 AC自动机
题解 使用AC自动机求解 插入病毒串时记录病毒串id 题目保证不同的串有不同的id直接记录即可 使用vis数组记录主串编号 同编号标记的不在处理 注意字符集为所有可见字符 题目内存卡的比较紧 不要使用memset清空数组否则会MLE 原因是开启O2优化时会只消耗使用过的内存 AC代码 #include <stdio.h> #include <bits/stdc++.h> u...原创 2018-10-22 00:39:20 · 441 阅读 · 0 评论 -
Finding Palindromes POJ - 3376 扩展kmp 字典树
题解 题目大意 n个字符串两两组合问拼起来的串有多少个回文串 将所给字符串存储起来 注意常数不能太大 使用扩展kmp计算反转串的每个后缀和原串的最长公公前缀 插入字典树时标记结束节点和当前位置为后缀是回文的节点 全部插入完毕后再匹配正向串 匹配时如果正向串下一个位置的后缀是回文串则加上当以当前节点结束的反转串数量 当正向串结束加上以当前节点结束的反向串和下一个位置后缀是回文的反向串 AC代码 #i...原创 2018-10-26 22:22:32 · 317 阅读 · 0 评论