
字符串
KMP等等
Buyi.
努力进大厂
展开
-
NOJ2452.悲伤的史大佬(字符串处理)
题目链接:https://acm.njupt.edu.cn/problem/NOJ2452题意:给定一个字符串,求它有多少个子字符串中包含sad序列解题思路:①先找出每一组字串[i,j],a[i]=‘s’,a[j]=‘d’,并且[i,j]中包含一个点a[k]=‘a’。使用的方法是找到每一个‘a’的前面最近的’s’,和后面最近的’d’②处理字符串中的每一个’a’,求出所有包含sad的最短字串,对于相同的L,取R最小的保存③枚举左端点,每次让当前字串包含一个最近的sad字串即可,统计贡献。#defi原创 2020-11-27 16:43:32 · 145 阅读 · 0 评论 -
CF625B.War of the Corporations(KMP+贪心)
题目链接:https://vjudge.net/contest/385137#problem/A题意:给出字符串a和b,要求最少需要修改多少个字符串a中的字符才能使得a中没有b出现解题思路:KMP可以寻找到在a字符串中b字符串可以出现的最大次数我们可以在search过程中,记录下每一个在a字符串中出现的b字符串末尾位置,将它们保存下来,然后进行处理处理的过程是在这些位置点中寻找最多的重合点,可以利用贪心的思想,每次都修改前一次出现的b字符串的最后一个字符v[i],记录下修改点cur,如果之后字符串原创 2020-07-28 10:18:59 · 228 阅读 · 0 评论 -
2020暑期牛客多校第一场F.Infinite String Comparision(无限循环字符串比较字典序)
题目链接:https://ac.nowcoder.com/acm/contest/5666/F解题思路:转自https://www.cnblogs.com/fate-/p/13299779.html不是很理解,反正记住两个字符串a和b,长度分别为p和q,那么比较p+q-gcd(p,q)次,就可以得到a∞ 和b∞ 的字典序大小比较#include<iostream>#include<cstdio>#include<string.h>#include<原创 2020-07-19 15:26:17 · 271 阅读 · 0 评论 -
2020暑期牛客多校第三场B.Classical String Problem(字符串移动)
题目链接:https://ac.nowcoder.com/acm/contest/5668/B解题思路:找规律,每次M x,对字符串开头进行更新即可相当于把字符串s看成一个循环串,开头不断变化#include<iostream>#include<cstdio>#include<string.h>#include<string>using namespace std;string s;int t;int b; //记录起点位置int原创 2020-07-18 21:03:14 · 135 阅读 · 0 评论 -
POJ1458.Common Subsequence(最大公共子序列)
题目链接:http://poj.org/problem?id=1458解题思路:dp[i][j]表示a字符串i位置与b字符串j位置时最大的公共子序列长度转移方程:for(int i=1;i<=len1;i++){ for(int j=1;j<=len2;j++){ if(s[i]==z[j]){ dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1); } else dp[i][j]=max(dp[i-1][j],dp[i][j-1原创 2020-07-10 11:14:07 · 149 阅读 · 0 评论 -
HDU4339. Query(树状数组+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4339题意:对两个字符串,1操作为改变一个串的一个字符,2为从一个位置开始计算s1与s2的最长相同串解题思路:树状数组,将s1与s2相同的更新为1,不相同的更新为0,然后利用二分法去区间求和,找到区间和=区间长度的位置,即可。注意:s1与s2的长度可能不一样#include<iostrea...原创 2020-04-05 18:16:28 · 125 阅读 · 0 评论 -
HDU3374. String Promblem(KMP+最大最小表示法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374题意:给出一个字符串s,首尾相连,任意位置切开,找出它的最小和最大字典序字符串和出现次数解题思路:找最大和最小字典序字符串问题,很容易想到最小、最大表示法。然后找到最小、最大字典中字符串后,求出他们的next数组,利用kmp分别在它们上面寻找s+s串的最大匹配数即可,注意Searchkmp时...原创 2020-04-05 12:12:52 · 110 阅读 · 0 评论 -
UVA1673.str2int(后缀自动机)
转自:https://www.cnblogs.com/lidaxin/p/5289228.htmlhttps://blog.youkuaiyun.com/weixin_34416754/article/details/93613251题意:给出几个字符串,计算出他们所有不重复不计前缀0的子串和,取余2011#include<iostream>#include<cstdio>...原创 2020-04-02 17:03:10 · 127 阅读 · 0 评论 -
最小表示法汇总
题目链接:https://vjudge.net/contest/365138#problem/B解法一:直接暴力利用string的compare和substr(这样竟然也能过,哭了)#include<iostream>#include<cstdio>#include<string>using namespace std;int main(){...原创 2020-03-31 19:55:16 · 234 阅读 · 1 评论 -
CF427D Match & Catch(后缀数组)
题目链接:https://vjudge.net/contest/363453#problem/Ihttp://codeforces.com/problemset/problem/427/D题意:给两个字符串s1和s2,找出s1和s2中的最短公共子串,且这个最短子串只在s1和s2中各出现一次。解题思路:利用后缀数组的height数组来找后缀的前缀,先将s1和s2串合并在一起,然后将s1与s2...原创 2020-03-27 14:56:32 · 237 阅读 · 0 评论 -
AC自动机总结
讲解: AC自动机讲解1AC自动机讲解2模版题:HDU2222 http://acm.hdu.edu.cn/showproblem.php?pid=2222#include<iostream>#include<cstdio>#include<queue>using namespace std;int k;int n;char s[...原创 2020-03-24 14:45:07 · 129 阅读 · 1 评论 -
HDU6096.String (思维+AC自动机)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6096题意:给出几组字符串W,又给出几个字符串的前缀p和后缀s,要求在前面给出的几组W字符串中找出前缀后缀同样出现p和s的数目解题思路:有两种,都很巧妙地拼凑出AC自动机解法第一种:把w字符串保存为w+’{’+w的形式,这样’{‘的左右两边就出现了后缀+{+前缀的情况,{用来分割开后缀与前缀...原创 2020-03-24 14:42:19 · 215 阅读 · 0 评论 -
CF1285D. Dr. Evil Underscores(字典树+贪心+递归)
题目链接:https://vjudge.net/contest/363072#problem/Fhttp://codeforces.com/problemset/problem/1285/D题意:找到一个X使得X与每一个值的异或值中的最大值最小解题思路:利用字典树,将每一个ai化成01串,放在字典树中。如果一个位数中,既有0又有1出现,那么这个地方的异或一定会有2^step出现。找到最大的...原创 2020-03-21 23:20:54 · 228 阅读 · 0 评论 -
CF1096D .Easy Problem(字符串+dp)
题目链接:http://codeforces.com/problemset/problem/1096/Dhttps://vjudge.net/contest/362376#problem/H题意:给定一个字符串s,以及s每个字符对应的歧义值。删除第i个字符会造成a[i]点歧义,现在要删除某些字符使得s中不会含有hard(hard各字符可以不在同一地方,但顺序要为h a r d)解题思路:...原创 2020-03-19 14:53:56 · 149 阅读 · 0 评论 -
CF1183H. Subsequences (hard version)(字符串+dp)
题目链接:https://vjudge.net/contest/362376#problem/Ghttp://codeforces.com/problemset/problem/1183/H解题思路:将字符串分成长度为0~len的子字符串,从中找出长度最大的k个利用dp[i][j]表示前i个字符中有多少个不重复的长度为j的子字符串。对于dp[i][j]来源两个部分,一个是dp[i-1]...原创 2020-03-19 14:33:41 · 258 阅读 · 0 评论 -
UVA12338.Anti-Rhyme Pairs(hash+二分)
题目链接:https://vjudge.net/contest/362376#problem/E题意:给定几个字符串,找最大前缀长度解题思路:利用hash来表示字符串,hash[i]=hash[i-1]*p+s[i]-‘a’+1;其中p设置得比26大,这样可以保证如果hash1[i]>hash2[i]时,i之后永远都不会存在hash1[i]=hash2[i]因为这一题多次询问,直接...原创 2020-03-19 14:07:07 · 116 阅读 · 0 评论 -
HYSBZ 3916 friends(跨段hash)
题目链接:https://vjudge.net/contest/362376#problem/B题意很好理解解题思路:一开始我的方法是利用双向KMP,求正向KMP和逆置后的KMP,然后分两种情况,分割点在前半段时,分割点在后半段时。比如在前半段时,len=(n-1)/2,分割点为i,分两部分处理,i的前半部分在正常顺序的U串中,利用while循环使k=Next[len+1+i](复制的S...原创 2020-03-19 14:00:09 · 142 阅读 · 0 评论 -
CF1087E. Vasya and Templates(字符串)
题目链接:https://vjudge.net/problem/CodeForces-1087E/originhttps://vjudge.net/contest/362376#problem/C题意:构造一个长度为k的字符串p,将字符串s变化成为一个新串,使得s串字典序大于等于a,小于等于b。其中变化规则是s’[i]=p[s[i]],s[i]=s[i]-‘a’+1。s a b p串中只有字...原创 2020-03-19 13:35:39 · 240 阅读 · 0 评论 -
字符串DP汇总(不断更新)
1.UVA11584 Partitioning by Palindromes题目链接:https://acm.njupt.edu.cn/problem/UVA11584/editor利用dp保存前i个字符中最小分割次数#include<iostream>#include<cstdio>#include<string>#include<strin...原创 2020-03-15 17:59:39 · 310 阅读 · 0 评论 -
CF727E. Games on a CD (Hash)
题目链接:https://acm.njupt.edu.cn/problem/CF727E题意:题目我看了好久才看懂,意思是将输入的第二行的字符串围成一个圆(首尾相连),可以从圆的任意位置剪开让它成为一个新的字符串,这个新的字符串必须用给出g个字符串来拼凑出(g个字符串不一定要全有,但只能有这g个字符串之中的字符串)。解题思路:令第二行输入字符串为str,g行输入的为s1.解决圆的问题,直接...原创 2020-03-15 13:55:13 · 298 阅读 · 0 评论 -
HDU4821. String(Hash)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4821https://acm.njupt.edu.cn/problem/HDU4821题意:从一个字符串中分割出M个长度为L的子字符串,并且这些子字符串不相同(Hash值不同).解题思路:一开始我是直接暴力,从i开始,尺取法每次截取M个长度为L的字段,结果超时了。后来看到别人的题解,对for...原创 2020-03-15 13:37:53 · 143 阅读 · 0 评论 -
CF858F Isomorphic Strings(Hash)
题目链接:http://codeforces.com/contest/985/problem/Fhttps://acm.njupt.edu.cn/problem/CF985F题意:给出两个相同长度的字符串,其中a串每一个x都有唯一的f(x)=y转化b串,同时b串中每一个y都有唯一的f(y)=x转化为a串解题思路:利用Hash,对26个字母在字符串中的位置赋予Hash值下面我直接引用我...原创 2020-03-13 23:37:49 · 235 阅读 · 2 评论 -
CF432D Prefixes and Suffixes(KMP+dp)
题目链接:http://codeforces.com/contest/432/problem/Dhttps://acm.njupt.edu.cn/problem/CF432D题意:先找前缀和后缀相同的子字符串,然后再在原字符串中找出这样的子字符串的数目解题思路:利用了KMP中的Next数组,只不过这一次Next[i]存储的不是i-1对应的最长字符串的长度,而是i点位置处前缀和后缀相同的最...原创 2020-03-13 22:38:03 · 338 阅读 · 0 评论 -
KMP+哈希整理
题目链接:两道模版题:CF471Dhttp://codeforces.com/problemset/problem/471/DPOJ3461http://poj.org/problem?id=3461KMP模版:kuangbin:void get_next(){ Next[0]=-1; int i=0,j=-1; while(i<wlen){ while(-1!...原创 2020-03-12 12:35:26 · 174 阅读 · 0 评论 -
CF1137B. Camp Schedule(KMP)
题目链接:https://vjudge.net/contest/361017#problem/Fhttp://codeforces.com/problemset/problem/1137/B题意:在一个母字符串a中,尽可能地拼出拼出最多要求的字符串b,同时母字符串可以重新排序,b在a中可以重叠一部分但不可以完全重叠。如 10101中可以看成2个101解题思路:直接利用KMP来找字符串匹...原创 2020-03-12 10:47:15 · 184 阅读 · 0 评论 -
CF149E. Martian Strings(KMP/后缀自动机)
题目链接:https://vjudge.net/contest/361017#problem/E题意:在一个字符母串中,找到两个不重叠的子串可以拼成要求得到的美好的 字符串。第一种做法:双向KMP参考:https://blog.youkuaiyun.com/acm_cxlove/article/details/8440574str为母串,_str为母串的倒序p为所要找的子串,pp为所...原创 2020-03-12 10:33:45 · 254 阅读 · 0 评论 -
CF898F.Restoring the Expressio.(哈希)
题目链接:https://vjudge.net/contest/361017#problem/Hhttp://codeforces.com/problemset/problem/898/F这道题题意并不难理解,就是讲一个字符串分成三段a、b、c,使a+b+c成立解题思路:利用哈希的特点,将p设置为10,这样就可以模拟10进制数来进行操作。我使用了双哈希防止出错。注意点:1.特判a...原创 2020-03-12 10:27:52 · 246 阅读 · 0 评论 -
POJ3690.Constellations(二维哈希处理)+UVA 11019 Matrix Matche
题目链接:http://poj.org/problem?id=3690题意:在给定的一个大矩阵中找出有多少种子矩阵解题思路:利用哈希数组来找字符串匹配,但是之前使用的哈希都用的是一维的字符串,这道题目可以将大矩阵转化成一行一行的字符串来看,通过对比每一行的q长度字串的哈希值来确定相不相同。利用Hash[i][j]记录第i行的第j个q长度串的哈希值大小然后先进行比较第一行是否相同,再进行剩...原创 2020-03-10 22:34:50 · 157 阅读 · 0 评论 -
CF535D Tavas and Malekas(字符串KMP)
题目链接:https://acm.njupt.edu.cn/problem/CF535D/editorKMP详解:https://blog.youkuaiyun.com/f1033774377/article/details/82556438https://www.cnblogs.com/zhangtianq/p/5839909.html题目大意是:给出字符串p,在输入的m个pos[i]位置处插入p...原创 2020-03-07 22:36:25 · 223 阅读 · 0 评论