马拉车——模版+KMP——模版
void Manacher(){
for (int i=;t[i];++i,len+=){
s[i<<]='#';
if (t[i]>='A'&&t[i]<='Z') s[i<<|]=t[i]-'A'+'a';
else s[i<<|]=t[i];
}
s[len++]='#';
int max_r=,pos=;
for (int i=;i<len;++i){
if (max_r>i) r[i]=min(max_r-i,r[*pos-i]);
else r[i]=;
while (i+r[i]+<len&&i-r[i]->=&&s[i+r[i]+]==s[i-r[i]-]) r[i]++;
if (r[i]+i>max_r){
max_r=r[i]+i;
pos=i;
}
}
}
//马拉车
#define N 1010
char s[N],p[N];
int nxt[N];
void get_nxt(char * p){
int i=,j=-; nxt[i]=j;
while (p[i]){
if (j==-||p[j]==p[i]) nxt[++i]=++j;
else j=nxt[j];
}
} int kmp(char *s,char *p){
get_nxt(p);
int i=,j=,ret=;
for (;s[i];++i){
while (j!=-&&s[i]!=p[j]) j=nxt[j];
j++;
if (!p[j]){
ret++; j=next[j];
//operations
}
}
return ret;
} int main(){ scanf("%s%s",s,p);
printf("%d\n",kmp(s,p)); return ;
}
//KMP算法
马拉车——模版+KMP——模版的更多相关文章
- 两种KMP题+KMP模版整理
最近稍微看了下KMP,不是很懂他们大神的A题姿势,但是模版总该还是要去学的. 其中next数组的求法有两处区别. 第一种:求主串中模式串的个数.HDU2087 剪花布条和HDU4847 Wow! Su ...
- KMP模版
#include<iostream> #include<cstdio> #include<cstring> using namespace std; ]; void ...
- HDU 5918 SequenceI (2016 CCPC长春站 KMP模版变形)
这个题目的数据应该是比较弱的,赛场上的时候我们暴力也过了,而且我的kmp居然比暴力还要慢-- 这个变形并不难,跳着选数,把漏掉的位置补上就可以了. 代码如下: #include<iostream ...
- KMP模版 && KMP求子串在主串出现的次数模版
求取出现的次数 : #include<bits/stdc++.h> ; char mo[maxn], str[maxn];///mo为模式串.str为主串 int next[maxn]; ...
- 模版——KMP
#include <iostream> #include <cstdio> #include <cstring> ; int f[maxn]; char P[max ...
- 【poj 1961】Period(字符串--KMP 模版题)
题意:给你一个字符串,求这个字符串到第 i 个字符为止的重复子串的个数. 解法:判断重复子串的语句很重要!!if (p && i%(i-p)==0) printf("%d % ...
- HDU 3549 Flow Problem (dinic模版 && isap模版)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 题意: 给你一个有向图,问你1到n的最大流. dinic模版 (n*n*m) #include ...
- 学习系列 - 马拉车&扩展KMP
Manacher(马拉车)是一种求最长回文串的线性算法,复杂度O(n).网上对其介绍的资料已经挺多了的,请善用搜索引擎. 而扩展KMP说白了就是是求模式串和主串的每一个后缀的最长公共前缀[KMP更像是 ...
- ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framew ...
随机推荐
- numpy利用数组进行数据处理
将条件逻辑表述为数组运算 numpy.where()是一个三目运算的表达式 In [34]: xarr = np.array([1.1,1.2,1.3,1.4,1.5]) In [35]: yarr ...
- C#(ASP.NET)隐藏或显示Excel中指定列
今天写的一个方法,实现Excel指定列的隐藏和显示: 环境:VS2010,OFFICE 2010 代码:#region 隐藏和显示Excel中的一列 /// <summary> ...
- CSS 中z-index全解析(摘自阿里西西)
z-index全解析 Z-index属性决定了一个HTML元素的层叠级别.元素层叠级别是相对于元素在Z轴上(与X轴Y轴相对照)的位置而言.一个更高的Z-index值意味着这个元素在叠层顺序中会更靠近顶 ...
- java对象生命周期概述复习
最近看了下java对象的生命周期做个笔记复习复习,很多不同的原因会使一个java类被初始化,可能造成类初始化的操作: 1) 创建一个java类的实例对象. 2) 调用一个java类中的静态方法. ...
- iOS 什么是函数式编程
前言:当前只做理解性的常规背书,根据不断深入学习会不断丰富解读内容,欢迎评论提意见 函数式编程:Functional Programming 1 基本解释: 函数式编程 是一种思维模式,一种编程思想, ...
- ios-如何搭建IPv6网络测试环境(转)
工具/原料 mac一台 iPhone手机2台(一台用于测试,另一台提供网络) 方法/步骤 准备网络.通过数据线连接iPhone和Mac,并将iPhone手机连接的Wi-Fi关闭,使用自己的 ...
- ETL应用:一种一次获取一个平台接口文件的方法
ETL应用场景中,若对端接口文件未能提供,任务会处于循环等待,直到对端提供为止,该方法极大的消耗了系统资源.为此想到了一种方法,一次获取一个平台的文件,实现思路如下: 1.第一次获取对端平台提供目录下 ...
- nodejs文件追加内容
const fs = require("fs"); // fs.appendFile 追加文件内容 // 1, 参数1:表示要向那个文件追加内容,只一个文件的路径 // 2, 参数 ...
- JSP的动态Include的静态Include
1. 静态导入示例 先总结: 1:静态include是把被引入的文件拼接到本页面中,再做为一个整体来编译,返回结果给客户端. 动态include是分别编译本页面和被引入的页面,再把结果合成一个html ...
- SecureCRT按退格键出现^H问题
1. 选择选项>>会话选项>>终端>>映射键