ACM 字符串
15zhazhahe
打杂小能手/吃/喝/睡/胖/菜/
展开
-
KMP学习笔记
串的模式匹配 串的模式匹配也可以说子串的定位,是一种重要的串运算。所谓模式匹配就是给定两个串s1和s2,在主串s1中找到子串找到一个子串等于s2的过程。对于这样的运算一般有两种方法,一种是暴力的匹配方法,而另一种则是KMP算法。暴力的匹配方法int BruteFroce(char s1[],char s2[]){ int i=0,j=0; int len1 = strlen(原创 2017-02-22 18:44:48 · 261 阅读 · 0 评论 -
CodeForces 868A Bark to Unlock
题目链接:http://codeforces.com/contest/868/problem/A 题意:给你一个由两个字母组成的字符串s,和n个长度也为2的字符串,现在问你能否用着n个字符串随意拼接(使用次数不限),使得s为拼出的字符串的子串 解析:因为只有两个字符,所以肯定是某一个字符串的第一个字符是等于s最后一个字符并且s的第一个字符等于某一个字符串的最后一个,或者s本身就等于某一个字符串#原创 2017-10-11 21:01:42 · 570 阅读 · 0 评论 -
hdu6170 Two strings【regex真好用】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 题意:有两个字符串,问你第二个字符串和第一个字符串能否匹配,第二个字符串有两种符号,’.’可以匹配任意字符,’*’表示前一个字付可以重复零次或多次 解析:我们队直接用的是c++自带的正则库,不过要注意,题目中的”.* “是先执行.后执行* 的,而不像正则里面.* 是指,.重复若干次。所以我们需原创 2017-08-22 20:37:34 · 916 阅读 · 5 评论 -
CodeForces 822B Crossword solving
题目链接:http://codeforces.com/contest/822/problem/B 题意:给你两个字符串s和t,问你最少把s中的几个字符变成?,才会使得s是t的子串,其实也就是相当于最少替换几个s的字符,使得s为t的子串,让你输出替换的个数和位置 解析:直接枚举每一个位置,整段比较下,然后维护下最小值就可以了#include <bits/stdc++.h>using namesp原创 2017-07-08 10:57:51 · 850 阅读 · 0 评论 -
CodeForces 798B Mike and strings
题目链接:http://codeforces.com/contest/798/problem/B 题意:给你n个字符串,有一种操作叫做左移,左移一次就把第一个字符加到这个字符串的末尾,问你最少的操作数使得,这个n个字符串都相等,若不存在这种操作就输出-1 解析:由于n和字符串的长度都不大,那么直接暴力搞就好,枚举最终的字符串的答案,然后逐个匹配,然后更新ans记录最小值即可#include <b原创 2017-05-01 20:58:59 · 889 阅读 · 0 评论 -
CodeForces 798A Mike and palindrome
题目链接:http://codeforces.com/contest/798/problem/A 题意:给你一个字符串,问你是否能只更改其中一个字母使得这个字符串是回文串 解析:原本是回文串,长度是偶数,那么是输出NO的,直接乱搞一下,就可以了#include <bits/stdc++.h>using namespace std;int main(void){ string s1,原创 2017-05-01 20:43:00 · 794 阅读 · 0 评论 -
Gym - 101196E Red Rover【kmp】
题目链接:https://vjudge.net/problem/Gym-101196E 题意:给你一个字符串s,让你找一个子串s1,把s中所有出现过的s1都替代成字符M,问你能使字符串s变成多短,输出最短的长度 解析:字符串不大,那就枚举所有子串,然后做kmp,然后不断维护ans#include <cstdio>#include <cstring>#include <algorithm>#原创 2017-03-17 13:29:43 · 809 阅读 · 0 评论 -
Gym - 101205D Fibonacci Words【kmp】
题目链接:https://vjudge.net/problem/Gym-101205D 题意:给你一个字符串递推式(也就是Fibonacci数列),每次输入一个n和一个字符串,问你字符串在f[n]这一项里出现了多少次 解析:首先数据规模很大所以存是存不下的,写了几个数列发现,出现的次数也是一个类似递推式的东西,不过当f[i-1]和f[i-2]拼接起来的时候有可能产生新的可匹配的串,于是分成两部分原创 2017-04-03 11:57:30 · 578 阅读 · 0 评论 -
Gym - 100623E Enchanted Mirror
题目链接:https://vjudge.net/problem/Gym-100623E 题意:给你四个字符串s1,s2,t1,t2,让你交换任意的字符使得s1等于t1,s2等于t2,交换的规则是,如果交换s1的i和j,那么交换s2的n-i+1,n-j+1,这里的n表示字符串长度(四个字符串长度一样),问你是否可以使得s1=t1,s2=t2, 解析:由于你怎么交换,s1[i]对应的s2[n-i+1原创 2017-03-31 11:00:24 · 983 阅读 · 0 评论 -
CodeForces 766A Mahmoud and Longest Uncommon Subsequence
题目链接:http://codeforces.com/contest/766/problem/A 题意:让你求a,b字符串的最长不同子串的长度,如果不存在就输出-1 解析:如果a==b,输出-1,否则输出最长的字符串的长度#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+100;const int inf =原创 2017-03-29 14:06:30 · 391 阅读 · 0 评论 -
CodeForces 785D Anton and School - 2
题目链接:http://codeforces.com/contest/785/problem/D 题意:给你一个字符串只包含’(‘和’)’,让你重新组成一个字符串,这个字符串的左边必须全部为)右边必须全部为(,问你有多少种这样的字符串 解析:先前缀和的方式处理出到第i个字符位置他前面有多少个’(‘,他后面有多少个’)’,处理好以后,剩下的就是枚举位置i,然后组合数运算#include <cstd原创 2017-03-20 23:32:01 · 409 阅读 · 0 评论 -
Gym - 100502H Clock Pictures【kmp】
题目链接:https://vjudge.net/contest/152210#problem/H 题意:给你两个钟,每个钟都有n个指针,问你这两个种是否一样,相当于一个钟旋转一些角度,判断两个钟是否重合 解析:一开始没想到怎么做,后面发现是kmp,也就是每个指针相差的角度存在一个数组了,然后匹配两个数组, 不过比较巧妙的是,需要把一个数组弄成两倍的#include <cstdio>#inclu原创 2017-03-05 18:23:07 · 603 阅读 · 0 评论 -
hdu2087 剪花布条【kmp】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087 题意:中文题 解析:kmp计数(匹配完时j=0)#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int maxn = 1000+10原创 2017-02-24 20:24:25 · 290 阅读 · 0 评论 -
hdu1686 Oulipo【kmp】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题意:给你字符串W和T,让你求W在T中出现了多少次,可重叠的计算(见样例) 解析:每次匹配完的时候cnt++,然后让j=nex[j]#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>usi原创 2017-02-23 19:19:42 · 406 阅读 · 0 评论 -
hdu 1711 Number Sequence【kmp】
题目链接:https://vjudge.net/contest/70325#problem/A 题意:给你n长度的序列,和m长度的序列,让你输出m和n配对的位置,并输出 解析:kmp裸题#include <algorithm>#include <cstdio>#include <cstring>#include <iostream>using namespace std;const i原创 2017-02-22 19:11:25 · 271 阅读 · 0 评论 -
CodeForces 864B Polycarp and Letters
题目链接:http://codeforces.com/contest/864/problem/B 题意:给你一串长度为n的字符串(由大小写字母组成),现在这个人只喜欢小写字母,现在让你求一段最长的连续子串(全由小写字母组成,并且夹在大写字母之间)长度 解析:从第一个大写字母开始,到第二个就更新答案,一直这样做下去#include <bits/stdc++.h>using namespace s原创 2017-10-13 22:07:38 · 457 阅读 · 0 评论