#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. .Net 两个对像之间的映射

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. oracle怎么查看表字段的类型

    select column_name,data_type,DATA_LENGTH From all_tab_columns where table_name=upper('表名') AND owner ...

  3. ubuntu 12.04 lts安装golang并设置vim语法高亮

    安装golang sudo apt-get install golang 设置vim语法高亮 sudo apt-get install vim-gocomplete gocode vim-syntax ...

  4. asp.net 中使用不同的数据源绑定gridview

    第一种,使用SqlDataReader绑定gridview.代码如下: public SqlDataReader bind() { SqlConnection con = new SqlConnect ...

  5. Oracle Split Partitions

    1. 创建分离分区的存储过程 CREATE OR REPLACE Procedure SP_Split_Partition( v_table_name_in in varchar2, v_part_n ...

  6. cocos2d-x实战 C++卷 学习笔记--第6章 场景与层

    前言: 一个场景(Scene)是由多个层(Layer)组成,而且层的个数要至少是1,不能为0. 场景切换 场景切换相关函数 1)void  runWithScene(Scene*  scene) 该函 ...

  7. 第零篇、HTML5简介

    1.什么是HTML5? 背景:互联网的快速兴起 1>网页5.0版本 2>2014年才定制HTML5标准 3>移动先行 2.为什么要使用HTML5? 1>跨平台(可以运行所有的浏 ...

  8. bzoj1015:[JSOI2008]星球大战starwar

    思路:反着做用并查集维护连通块个数就好了. #include<iostream> #include<cstdio> #include<cstring> #inclu ...

  9. SharePoint工作流(workflow)不能自动启动

    在定制工作流时,设置了当Item创建或更改时,触发工作流.用系统帐户登录时一直不会触发.这是因为这是SharePoint的安全机制,阻止了在系统帐户登陆时自动启动工作流. 解决方法:使用不是系统账户的 ...

  10. busbox编译出错,arm-linux-未找到命令

    1.问题:/opt/FriendlyARM/mini6410/linux/busybox-1.17.2/scripts/gcc-version.sh: 行 11: arm-linux-gcc: 未找到 ...