首页 > 其他分享 >【KMP】border 题解

【KMP】border 题解

时间:2023-08-13 10:00:22浏览次数:31  
标签:1000010 nxt 题解 ll 样例 KMP include border

题目描述

输入

输出

样例输入

abaabaa

样例输出

17


样例解释:
f[2][a] = 1
f[3][a] = 1
f[4][a] = 1
f[4][b] = 2
f[5][a] = 1
f[5][b] = 2
f[6][a] = 3
f[7][a] = 4
f[7][b] = 2
以上为>0的f[][],求和=17

数据范围限制

这一篇同上一篇,都是从以前博客搬过来的,所以

真的是我的QWQ!之所以是截图是因为markdown丢了。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#define ll long long
using namespace std;
ll nxt[1000010],n,ans,f[1000010][26];
char s[1000010];
void getNext(){
	for(ll i=1,j=0;i<n;i++){
		while(j>0 && s[i]!=s[j]) j=nxt[j-1];
		if(s[i]==s[j]){
			j++;
		}
		nxt[i]=j;
	}
}
int main(){
	scanf("%s",s);
	n=strlen(s);
	getNext();
	for(ll x=1;x<n;x++){
		for(char c='a';c<='z';c++){
			if(c==s[nxt[x-1]]){
				f[x][c-'a']=nxt[x-1]+1;
			}
			else{
				f[x][c-'a']=f[nxt[x-1]][c-'a'];
			}
			ans+=f[x][c-'a'];
		}
	}
	printf("%lld",ans);
} 

标签:1000010,nxt,题解,ll,样例,KMP,include,border
From: https://www.cnblogs.com/znpdco/p/17626198.html

相关文章

  • 猴子拆房 题解
    题目描述输入输出样例输入【样例输入1】22345【样例输入2】3242513【样例输入3】6353417174241样例输出【样例输出1】3【样例输出2】0【样例输出3】10数据范围限制提示这个是我的,是我的QWQ,我没有转载,只是把以前的博客搬运......
  • 「题解注释」P7518 [省选联考 2021 A/B 卷] 宝石
    联合省选2021宝石题解-hezlik的博客-洛谷博客(luogu.com.cn)耗时:一晚上+半个上午代码注释:#include<bits/stdc++.h>usingnamespacestd;constintN=500000,C=21;intRi(){intx=0,y=1;charc=getchar();for(;c<'0'||c>'9';c=getchar())if......
  • CF452C 题解
    洛谷链接&CF链接题目简述有\(m\timesn\)张牌,有\(n\)个种类,每个种类有\(m\)张,现在抽一张放回,再抽一张,求这张牌与第一张抽出的牌种类相同的概率。思路本题是一道结论题,我们来推一下公式。首先需要特判一个点:只有\(1\)张牌,即\(n=m=1\),那么两次抽都会是这张牌,所......
  • 学习笔记:kmp&失配树
    1.kmp这就不讲了吧,border数组弄懂就是水算法了!但是变种真的毒瘤啊2.hashemmmmm3.fail树这就是kmp的border数组的变种kmp一次一次next跳,太慢了!我们就想到倍增优化嘛\(n\)个点,\(n-1\)条边联通一眼顶针这就是一颗树那么找共同前缀就是找LCA倍增啥的搞搞就得传送:hereCo......
  • acwing 116.飞行员兄弟 (算法竞赛进阶指南 p48 t1 ) 题解
    原题链接https://www.acwing.com/problem/content/description/118/题目描述“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有16个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个4х4的矩阵,您可以......
  • IDEA/Android Studio的gradle控制台输出中文乱码问题解决
    原文地址:IDEA/AndroidStudio的gradle控制台输出中文乱码问题解决-Stars-One的杂货小窝在项目中,有使用到Gradle自定义脚本,会有些输出日志,但是输出中文就变成乱码了..本篇就介绍下解决方法乱码效果如下图所示步骤我是window系统,不知道其他系统会不会出现这个问题乱......
  • Codeforces Round 874 G题解
    做不动那么多题了,来个GG就是问你一棵树能切成多少个大小为3的链,想了半天,想过dp啥的,但是后来发现这个贪心就好了,可以证明贪心找不到的,其他方法也找不到好久没复健了,这是第一次,感觉以后要多做题才可以#include<bits/stdc++.h>usingnamespacestd;constexprintlimit=(4e......
  • 国标GB28181视频平台LntonGBS(源码版)国标视频云服务平台主子码流都为H.265时,切换出现花
    国标视频云服务LntonGBS平台是基于国标GB28181协议的平台,可实现的视频能力有:实时直播、视频录像、语音对讲、云存储、检索及回放、告警、级联等。平台支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。最近有用户反馈,在LntonGBS平台......
  • RTSP流媒体服务器LntonNVR(源码版)安防监控平台开启录像后,录像回看无数据的问题解决方案
    LntonNVR平台通过RTSP/ONVIF协议实现了优秀的视频能力。它可以采集前端接入设备的音视频资源,并将其转码成适用于全平台、全终端分发的视频流格式,包括RTMP、FLV、HLS、WebRTC等格式。这使得LntonNVR平台具备了视频监控直播、云端录像、检索与回看、告警等安防监控功能。平台部署轻快......
  • P7438 更简单的排列计数 题解
    前置芝士:伯努利数等幂求和。其中伯努利数\(B_i\)的生成函数为\(\frac{x}{e^x-1}\)。首先这种逆序对有个套路的dp:令\(f_{i,j}\)表示填了前\(i\)个数,逆序对为\(j\),这时排列的\(val_{\pi}\)的乘积之和。有转移:\(f_{i,j}=\sum\limits_{k=0}^{i-1}f_{i-1,j-k}i^k\),初始......