首页 > 其他分享 >PAM模板

PAM模板

时间:2023-02-07 12:55:52浏览次数:74  
标签:ch int pos tot num fail PAM 模板

#include <bits/stdc++.h>
using namespace std;
const int M=5e5+5;

char s[M];
int len[M],num[M],fail[M],ch[M][26],tot=1;

int get_fail(int x,int i) {
    while(i-len[x]-1<=0||s[i-len[x]-1]!=s[i])x=fail[x];
    return x;
}

void PAM(char *s) {
    int n=strlen(s+1);
    int last=0,now=0;
    fail[0]=1,len[1]=-1;
    for(int i=1;i<=n;i++) {
        if(i>1)s[i]=(s[i]+last-97)%26+97;
        int pos=get_fail(now,i);
        if(!ch[pos][s[i]-'a']) {
            fail[++tot]=ch[get_fail(fail[pos],i)][s[i]-'a'];
            //需要先建立点,不然不知道往哪里走
            ch[pos][s[i]-'a']=tot;
            len[tot]=len[pos]+2;
            num[tot]=num[fail[tot]]+1;
            //注意这里是看的fail指针的地方
        }
        now=ch[pos][s[i]-'a'];
        last=num[now];
        cout<<last<<' ';
    }
}

int main() {
    scanf("%s",s+1);
    PAM(s);
    return 0;
}

标签:ch,int,pos,tot,num,fail,PAM,模板
From: https://www.cnblogs.com/basicecho/p/17098015.html

相关文章

  • POJ2487 Farey Sequence 欧拉函数模板题
    FareySequenceDescriptionTheFareySequenceFnforanyintegernwithn>=2isthesetofirreduciblerationalnumbersa/bwith0<a<b<=nandgcd(a,b)=1......
  • RMQ模板整理
    查询区间的最大最小值,属于离线做法,主要运用倍增+DP思想。参考书籍:算法进阶指南一维RMQ查询区间最大值或最小值//求最大值,数组下标从1开始。//求最小值,或者最大最小值下标,......
  • AcWing整数二分算法模板
    原链接boolcheck(intx){/*...*/}//检查x是否满足某种性质//区间[l,r]被划分成[l,mid]和[mid+1,r]时使用:intbsearch_1(intl,intr){while(l<r......
  • 类模板与板书对象2
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;template<typenamenumberType>structIsMultiple{numberTypem_Divisor;//几的......
  • 【Appium】python利用Template生成对象模板_appium_元素定位/操作
    UI自动化中用PageObject设计模式就会发现page元素定位代码基本重复,复制黏贴,修改,所以就想到运用模板方式,批量生成page,同理也能批量生成handle。有模板,利用配置文件ini获取......
  • 模板模式
    /*模板模式:解决某类事情的步骤有些是固定的,有些是会发生变化的,那么这时候我们可以为这类事情提供一个模板代码,从而提高效率。需求;编写一个计算程序运行时间的模板。模板......
  • 批量通过模板打印
    模版表名Templatesheet25数据列表名sheet1打印程序SubPrintLabel()WithThisWorkbook.Sheets("Sheet1")limitmax=.Range("B10000").End(xlUp).Row......
  • 【C++ 泛型编程01:模板】函数模板与类模板
    【模板】除了OOP外,C++另一种编程思想称为泛型编程,主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板函数模板函数模板作用建立一个通用函数,其函数......
  • python基础:多层语法糖、有参装饰器、有参装饰器模板、装饰器修复技术、递归函数
    目录一、多层语法糖二、有参装饰器三、有参装饰器模板四、装饰器修复技术五、递归函数六、作业一、多层语法糖多层语法糖实际应用中出现较少,但是我们也需要了解相关的运......
  • 支付宝小程序模板开发,协助商家一键创建小程序
    大家好,我是小悟关于支付宝小程序模板开发,之前写过相关的介绍,详情请看【​​支付宝小程序模板开发,一整套流程​​】这篇文章。和微信一样,支付宝也有通过接口创建小程序的服......