ZOJ 题目3587 Marlon's String(KMP)】的更多相关文章

Marlon's String Time Limit: 2 Seconds      Memory Limit: 65536 KB Long long ago, there was a coder named Marlon. One day he picked two string on the street.A problem suddenly crash his brain... Let Si..j denote the i-th character to the j-th characte…
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3587 题意:给出两个字符串S和T.S,T<=100000.拿出S的两个子串(能够重叠),将两个子串连接起来成为字符串T的方法有多少种. 思路:用扩展KMP求出S的从每位開始的子串与T的公共前缀,再将两个子串翻转,再用扩展KMP求出S反的从每位開始的子串与T反的公共前缀.找出当中和为T子串长度的S公共前缀和S反的公共前缀的数量,相乘为结果. 代码: #include…
ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715 1730 1755 1760 1763 1796 1813 1879 1889 1904 1915 1949 2001 2022 2099 2104 21…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 很容易想到用kmp 这里是next数组的应用 定义dp[i]表示以s[i]结尾的前缀的总数 那么dp[i]=dp[next[i]]+1; 代码: #include<stdio.h> #include<string.h> ; ; int dp[MAXN]; char str[MAXN]; int next[MAXN]; void getNext(char *p) { int j,k…
翻转子串 參与人数:1197时间限制:3秒空间限制:32768K 通过比例:35.03% 最佳记录:0 ms|8552K(来自 ) 题目描写叙述 假定我们都知道很高效的算法来检查一个单词是否为其它字符串的子串.请将这个算法编写成一个函数.给定两个字符串s1和s2.请编写代码检查s2是否为s1旋转而成.要求仅仅能调用一次检查子串的函数. 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成.字符串中字符为英文字母和空格,区分大写和小写,字符串长度小于等于1000. 測试例子: "H…
Count the string Problem Description It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of this string. For example:s: "abab"The prefi…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5311 思路分析:该问题要求在字符串中是否存在三个不相交的子串s[l1..r1], s[l2..r2], s[l3..r3]能够拼接成模式串,而且满足要求1≤l1≤r1<l2≤r2<l3≤r3≤n: 由于数据较小,可见将模式串拆分为所有的三个不想交的子串的所有可能,再使用KMP算法求在字符串中是否存在这三个子串且满足顺序要求即可: 代码如下: #include <cstdio> #inc…
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3336 如果你是ACMer,那么请点击看下 题意:求每一个的前缀在母串中出现次数的总和. AC代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <string> #include…
题目大意 给定一个由且仅由字符'H','T'构成的字符串\(S\). ​ 给定一个最初为空的字符串\(T\) ,每次随机地在\(T\)的末尾添加'H'或者'T'. 问当\(S\)为\(T\)的后缀时,在末尾添加字符的期望次数. 对\({10}^9+7\)取模 题解 设\(f_i\)为从\(i-1\)匹配到\(i\)期望的匹配次数,\(g_i\)表示匹配到\(i\)后下一次失配能匹配到什么位置(用KMP求),\(s_i=\sum_{j=1}^if_j\) 考虑匹配到第\(i\)位的情况: \[ f…
问题描述众所周知,aekdycoin擅长字符串问题和数论问题.当给定一个字符串s时,我们可以写下该字符串的所有非空前缀.例如:S:“ABAB”前缀是:“A”.“AB”.“ABA”.“ABAB”对于每个前缀,我们可以计算它在s中匹配的次数,因此我们可以看到前缀“a”匹配两次,“ab”也匹配两次,“ab a”匹配一次,“ab ab”匹配一次.现在,您需要计算所有前缀的匹配时间之和.对于“abab”,它是2+2+1+1=6.答案可能非常大,因此输出答案mod 10007. 输入第一行是一个整数t,表示…