随笔分类 - KMP&拓展KMP
摘要:传送门:A Simple Problem 题意 给定两个序列s1和s2,同样的数字可以用相同的别的数字代替(并且也可以是出现过的数字),问s2在s1中出现了几次。 题解 首先预处理一下这两个序列,因为数字的位置是不会变得,所以把每个数字用当前位置和前一次出现的位置的差表示,如果是第一次出现,用-1表
阅读全文
摘要:传送门:carpet 题意 有一个n*m的地毯,aij表示地毯每格的元素,bij表示地毯每格的价格,要求选取一块价格最大值最小的地毯,并且这块地毯无限铺开之后,原地毯是其子矩阵。 题解 先找到这个矩阵的最小循环节子矩阵,求一下每行的循环节长度用map记录,取出现次数为m并且循环节长度最小的;每列也求
阅读全文
摘要:传送门:All with Pairs 题意:给你n个字符串,求出,f(si,sj)的意思是字符串 si 的前缀和字符串 sj 后缀最长相等部分。 题解:先对所有的字符串后缀hash,用map记录每个hash值(后缀)有多少个一样的。这个地方后缀的 hash 值可以将字符串倒过来求,每次乘以base^
阅读全文
摘要:传送门:https://www.acwing.com/problem/content/162/(acwing有视频讲解,题解,数据之类的) 题意:给你两个字符串a和b,有q次询问,每次询问输出a的所有后缀和b恰好匹配长度为x的后缀个数。 题解:这个题好微妙啊,我换了两种思路都不太对。然后看了一下大雪
阅读全文
摘要:传送门:POJ - 3376 题意:给你n个字符串,两两结合,问有多少个是回文的; 题解:这个题真的恶心,我直接经历了5种错误类型 : ) ... 因为卡内存,所以又把字典树改成了指针版本的。 字符串s与字符串t组合是回文串的情况 1. len(s) > len(t), t的反串是 s 的前缀,且s
阅读全文
摘要:传送门:FZU - 1901 题意:给你个字符串,让你求有多少个p可以使S[i]==S[i+P] (0<=i<len-p-1)。 题解:这个题是真的坑,一开始怎么都觉得自己不可能错,然后看了别人的博客打脸了,发现自己掉坑了了...一开始想的是找出最小循环节,只要每次输出多加一个循环节,最后输出len
阅读全文
摘要:传送门:HDU - 3613 题意:给出26个字母的价值,然后给你一个字符串,把它分成两个字符串,字符串是回文串才算价值,求价值最大是多少。 题解:这个题可以用马拉车,也可以用拓展kmp。 ①Manacher:先记录下第i个字符的价值,然后求前缀和。然后遍历分的位置,分别判断前半段和后半段是否为回文
阅读全文
摘要:做一个高产的菜鸡 传送门:HDU - 3374 题意:多组输入,给你一个字符串,求它最小和最大表示法出现的位置和次数。 题解:刚刚学会最大最小表示法,amazing.. 次数就是最小循环节循环的次数。 #include<bits/stdc++.h> using namespace std; int
阅读全文
摘要:传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意:多组输入,n==0结束。给出n个字符串,求最长公共子串,长度相等则求字典序最小。 题解:(居然没t,可能数据水了吧)这个题和 HDU - 1238 基本一样,用string比较好操作。选第一个
阅读全文
摘要:HDU - 4300 题意:这个题目好难读懂,,先给你一个字母的转换表,然后给你一个字符串密文+明文,密文一定是全的,但明文不一定是全的,求最短的密文和解密后的明文; 题解:由于密文一定是全的,所以他的长度一定大于整个字符串的一半。将这一半先解密,然后和后缀对比一下,求最长的公共前缀。那么就转换为了
阅读全文
摘要:kmp算法老是忘,于是决定写一篇博客记录一下。 B站这个视频很易懂:https://www.bilibili.com/video/av11866460?from=search&seid=13585210173884155297 先说一下next数组的含义,next[i]就是字符串从0到i-1这个子串
阅读全文

浙公网安备 33010602011771号