[hdu1686] Oulipo【KMP】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1686
保存KMP模版,代码里P是模版串,next[]就是为它建立的。T是文本串,就是一般比较长的。next[i]表示i后缀的最长相等前缀在哪,字符串从1开始数(而不是0)。
#include <cstdio>
#include <cstring> const int maxn = 10005, maxm = 1000005; /* n for |Pattern|, m for |Text| */
/* |Pattern| is shorter than |Text| in general */ int kase, n, m, next[maxn];
char P[maxn], T[maxm]; /* build next[] for Pattern, not for Text!!! */
inline void get_next(void) {
next[0] = -1;
next[1] = 0;
int i = 1, j = 0;
while (i < n) {
while (j != -1 && P[i + 1] != P[j + 1]) {
j = next[j];
}
next[++i] = ++j;
}
}
inline int count(void) {
int i = 0, j = 0, rt = 0;
while (j < m) {
while (i != -1 && P[i + 1] != T[j + 1]) {
i = next[i];
}
++i;
++j;
if (i == n) {
++rt;
}
} return rt;
} int main(void) {
//freopen("in.txt", "r", stdin);
scanf("%d", &kase);
while (kase--) {
scanf("%s", P + 1);
n = strlen(P + 1);
scanf("%s", T + 1);
m = strlen(T + 1); get_next();
printf("%d\n", count());
}
return 0;
}
[hdu1686] Oulipo【KMP】的更多相关文章
- hdu 1686 Oulipo 【KMP】(计算模式串匹配的次数——与已匹配的字串可以有交集)
题目链接:https://vjudge.net/contest/220679#problem/B 题目大意: 输入一个T,表示有T组测试数据: 每组测试数据包括一个字符串W,T,T长度大于W小于100 ...
- 【KMP】【最小表示法】NCPC 2014 H clock pictures
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1794 题目大意: 两个无刻度的钟面,每个上面有N根针(N<=200000),每个 ...
- 【动态规划】【KMP】HDU 5763 Another Meaning
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5763 题目大意: T组数据,给两个字符串s1,s2(len<=100000),s2可以被解读成 ...
- HDOJ 2203 亲和串 【KMP】
HDOJ 2203 亲和串 [KMP] Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【KMP】Censoring
[KMP]Censoring 题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his ...
- 【KMP】OKR-Periods of Words
[KMP]OKR-Periods of Words 题目描述 串是有限个小写字符的序列,特别的,一个空序列也可以是一个串.一个串P是串A的前缀,当且仅当存在串B,使得A=PB.如果P≠A并且P不是一个 ...
- 【KMP】Radio Transmission
问题 L: [KMP]Radio Transmission 题目描述 给你一个字符串,它是由某个字符串不断自我连接形成的.但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入 第一行给出字 ...
- 【kmp】似乎在梦中见过的样子
参考博客: BZOJ 3620: 似乎在梦中见过的样子 [KMP]似乎在梦中见过的样子 题目描述 「Madoka,不要相信QB!」伴随着Homura的失望地喊叫,Madoka与QB签订了契约. 这是M ...
- 【POJ3461】【KMP】Oulipo
Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without t ...
随机推荐
- ThinkPHP RBAC权限管理机制
RBAC是ThinkPHP很好用的后台权限管理的,话不多说,实现方法如下,也方便以后自己查询使用: 1.新建4个数据库表 self_role权限表 CREATE TABLE `self_role` ( ...
- codeforces B. Eugeny and Play List 解题报告
题目链接:http://codeforces.com/problemset/problem/302/B 题目意思:给出两个整数n和m,接下来n行给出n首歌分别的奏唱时间和听的次数,紧跟着给出m个时刻, ...
- 加快你的JavaScript加载时间
发现可以提速的内容 你必须首先发现你的什么图片和HTML加载缓慢了你的脚本速度,下面提供了方法: 1. Firefox web-developer toolbar 2. Firebug Plugi ...
- 51nod1060:最复杂的数(DFS求反素数)
把一个数的约数个数定义为该数的复杂程度,给出一个n,求1-n中复杂程度最高的那个数. 例如:12的约数为:1 2 3 4 6 12,共6个数,所以12的复杂程度是6.如果有多个数复杂度相等,输出最 ...
- Oracle数据常用操作
将用逗号隔开字段拆分成两行: select * from mp_fs_file_info a,dm_process_upload b where instr(b.attachment,a.file_i ...
- Java笔记(七)
File类: import java.io.File; import java.io.IOException; public class Demo{ public static void main(S ...
- 如何使用Psyco为你的Python程序提速
psyco加速Python执行速度的方法:要求: 版本对照:File name Python versions Well-tested withpsyco-x.y-win32-py ...
- 禁用ubuntu 客人会话
sudo vi /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf 添加: allow-guest=false 重启.
- bzoj1095
动态点分治 先建出点分树,每个点上维护两个堆,s1,s2,分别表示子树中到点分树中父亲的所有长度,每个儿子s1的最大值,那么对于每个点答案就是s2的最大+次大,再维护一个s3保存这个. 首先我们要搞一 ...
- 二、Chrome开发者工具详解(2)-Network面板
摘自: http://www.cnblogs.com/charliechu/p/5981346.html