![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
文章平均质量分 85
axtices
这个作者很懒,什么都没留下…
展开
-
1003 Forgiving Matching
文章目录1003 Forgiving Matching题意思路PS:不太懂FFT,但又想知道原理。传送门 [FFT详解](https://blog.csdn.net/weixin_45819197/article/details/114890441)1003 Forgiving Matching题意给两个字符串s1s2(len1>=len2)s1s2(len1>=len2)s1s2(len1>=len2)问s2s2s2与是s1s1s1的子串进行匹配,在允许出错kkk个字符情况下,最原创 2021-07-29 11:00:02 · 112 阅读 · 0 评论 -
AC自动机(Trie 板子)&后缀数组模板(解决原串与子串问题)
大自然的帮运工使用板子注意事项:注意:1.串是否全是小写字母2.根节点为13.节点数不超过maxn4.多组数据注意 清空5.复杂度嘛。。。。。建树o(n*len)前置知识:Trie树需求:给定n个模式串和1个文本串,求有多少个模式串在文本串里出现过。输入n个模式串, 一个原串输出结果: 原串中含有模式串的个数。in:6abcdcdcdcdacaab abcdacout:5#include<bits/stdc++.h>#define maxn原创 2021-05-26 22:42:41 · 209 阅读 · 0 评论 -
题-Slot Machines(KMP, next)
Slot Machines传送门什么是KMP?1.现在我们面临这样一个问题:有一个文本串s和一个模式串p,现在要查找p在s中的位置。朴素算法:o(n2n^2n2);用KMP算法实现(对next未优化) o(k*n);在朴素算法中:当s[i]!=a[j]; 直接从i-j的位置开始.这样就很麻烦很重复。引入next数组,存放前缀和后缀的最大长度。怎么求next的数组呢??两种写法:1.next[i]表示 0~i-1的串中前后缀相同的最大长度。 (初始下标为0)2.next[i]表示1~i的原创 2021-03-31 14:55:41 · 223 阅读 · 0 评论 -
萌新の马拉车算法
马拉车该算法解决一长串字符的最大长度回文字符串(当然他的用处不仅局限于此)普通解法 时间复杂度o(n*n) 马拉车算法 o(n)。原串S: abbbab变化后的 新串 TT =@ # a # b # a # a # b # a #P = 0 0 1 0 3 0 1 6 1 0 3 0 1 0 //p数组//为什么要变化S,成新串,后续解释发现了点端倪了吧 怎么会有p数组的值也是怎么对称呢。1 0 3 0 1 6 1 0 3 0 1 (以后补,睡觉了)链接: link.这原创 2020-10-10 00:43:14 · 51 阅读 · 0 评论 -
题—D. Catching Cheaters(最大子序列问题)
动态规划的新认知(初步了解)心得:一.遇见动态规划的三步走:1.得证当前有最优解(要分析他的可行性):局部最优解推出整体 最优解2.无效性:博主目前认为:现在的结果不会对之前的结果有影响。部分dp无非是这是三种 dp[i][j],dp[i-1][j],dp[i][j-1],他们对dp[i][j]的影响。3.初始化初始化初始化(dp数组初始化,重要事情说三遍 )因题意初始化而不同。二.最大公共子序列的求解问题题目链接题意:给两字符串a,b,已知长度。x是a的子串,原创 2020-11-16 23:24:10 · 220 阅读 · 0 评论 -
题—Subsequence Pair
求最大公共子序列数(+dp)题目链接:牛客网小米选拔赛2,I题。最大公共子序列数定义:给两字符串x,y,如果Z既是X的子序列,又是Y的子序列,则称Z为X和Y的公共子序列最大公共子序列数是在所有z中长度最大。eg:x:abcbxyzy:bdcaxyz 最大z: bcxyz 长度5.ps:dp,字符串,卡常。题意:给两字符串x,y:从x,y中分别选出a,b子序列并且字典序:a<b.求len(a+b)之和的最大值。多组数据输入。思路: x的下标 i,(x[i]), y的原创 2020-11-06 10:58:31 · 97 阅读 · 0 评论 -
题0689
ACM2019陕西省赛-ZOJ4128-0689题目大意:一个字符串,仅有0、6、8、9组成,选取一个子串,翻转,得到新的字符串,问新得到的字符串不同的有多少个?0,8翻转还是自己,6翻转是9,9翻转是6。思路不要模拟去做,肯定超时。如果每个数都不一样,那么翻转后不同的应该是(1+n)*n/2,就是子串的个数,再算上自己本身的,是(1+n)*n/2+1,我们把重复的减去就行了。去重,如果开头-末位是0-0,8-8,6-9,9-6的都是不行的。比如0680,翻转0680,其实还是翻转68,和开头原创 2020-10-10 13:18:44 · 106 阅读 · 0 评论