#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define Maxn 400010 char s[Maxn];
int l,nt[Maxn]; int mymin(int x,int y) {return x<y?x:y;} void exkmp()
{
int mx=,id=;
nt[]=l;
for(int i=;i<=l;i++)
{
int k;
if(i<mx) k=mymin(nt[i-id+],mx-i+);
else k=;
while(s[k+]==s[i+k]&&i+k<=l) k++;
nt[i]=k;
if(i+nt[i]->mx) mx=i+nt[i]-,id=i;
}
} int main()
{
while(scanf("%s",s+)!=EOF)
{
l=strlen(s+);
exkmp();
// for(int i=1;i<=l;i++) printf("%d ",nt[i]);printf("\n");
for(int i=l;i>=;i--)
{
if(nt[i]==l-i+) printf("%d ",l-i+);
}
printf("\n");
}
return ;
}

exkmp

2016-11-17 19:31:47


再来:

POJ 3461

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define Maxn 10010
#define Maxm 1000010 char s[Maxn],ss[Maxm];
int l1,l2; int nt[Maxn],td[Maxm]; int mymin(int x,int y) {return x<y?x:y;} void exkmp()
{
int mx=,id=;
for(int i=;i<=l1;i++)
{
int k;
if(i<mx) k=mymin(nt[i-id+],mx-i+);
else k=;
while(s[+k]==s[i+k]&&i+k<=l1) k++;
nt[i]=k;
if(nt[i]+i->mx) mx=nt[i]+i-,id=i;
}
// for(int i=2;i<=l1;i++) printf("%d ",nt[i]);
// printf("\n"); mx=,id=;
for(int i=;i<=l2;i++)
{
int k;
if(i<mx) k=mymin(nt[i-id+],mx-i+);
else k=;
while(s[+k]==ss[i+k]&&i+k<=l2&&+k<=l1) k++;
td[i]=k;
if(i+td[i]->mx) mx=td[i]+i-,id=i;
}
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s%s",s+,ss+);
l1=strlen(s+);
l2=strlen(ss+);
exkmp();
int ans=;
for(int i=;i<=l2;i++) if(td[i]==l1) ans++;
printf("%d\n",ans);
}
return ;
}

【无聊放个模板系列】POJ2752 EXKMP的更多相关文章

  1. 【无聊放个模板系列】BZOJ 3172 (AC自动机)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  2. 【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  3. 【无聊放个模板系列】BZOJ 1597 斜率优化

    STL 双向队列DEQUE版本 #include<cstdio> #include<cstdlib> #include<cstring> #include<i ...

  4. 【无聊放个模板系列】POJ 3678 2-SAT

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  5. 【无聊放个模板系列】POJ 1274 (匈牙利)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  6. 【无聊放个模板系列】HDU 1269 (SCC)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  7. 【无聊放个模板系列】HDU 1358 KMP

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  8. 【无聊放个模板系列】HDU 3068 MANACHER

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  9. python 回溯法 子集树模板 系列 —— 14、最长公共子序列(LCS)

    问题 输入 第1行:字符串A 第2行:字符串B (A,B的长度 <= 1000) 输出 输出最长的子序列,如果有多个,随意输出1个. 输入示例 belong cnblogs 输出示例 blog ...

随机推荐

  1. php的传值和传址

    有些情况下,可能希望在函数体内对参数的修改在函数体外也能反映; 使用引用传递参数要在参数前加上&符号; 例子: <?php $a=5; function show(&$a){   ...

  2. jQuery 黑白插件

    1 add jQuery and plug in to the page <script src="js/jquery.min.js"></script> ...

  3. Android线控的使用

    实现方式一:只能在程序为前台时监控 在Activity中即可监听 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { Log ...

  4. Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)

    前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...

  5. 如何防止SWF文件被反编译

    这篇文章的标题所提出的问题的答案是“不可能”.至少对我来说是不可能的.借助适当的工具,我们可以反编译任何SWF文件.所以,不要将重要的信息置于SWF文件中.SWF文件中不要包含个人的帐号或者密码. 我 ...

  6. 牛客_剑指offer_重建二叉树,再后续遍历_递归思想_分两端

       总结:    重建二叉树:其实就是根据前序和中序重建得到二叉树,得到后续,只要输出那边设置输出顺序即可 [编程题]重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的 ...

  7. 鼠标点击input时,placeholder中的提示信息消失

    html代码: <input type="text" placeholder="多个关键词空格隔开"> 鼠标点击input时,placeholder ...

  8. Java线程练习

    /*线程练习创建两个线程,与主线程交替运行 */ class Text extends Thread{    private String name;    Text(String name)     ...

  9. fgetc, getchar(), fscanf的问题

    1.漫谈:为什么 函数fscanf(FILE stream, const char format, ...)的 第3个参数中 总是用变量的地址 或者是用指针. 这个问题涉及到 传值 和 传指针.一般情 ...

  10. leetcode Permutations II 无重全排列

    作者:jostree  转载请注明出处 http://www.cnblogs.com/jostree/p/4051169.html 题目链接:leetcode Permutations II 无重全排 ...