洛谷 P3805 【模板】manacher

【代码超详解】洛谷 P3805 【模板】manacher算法 一、题目描述 二、算法分析说明与代码编写指导 三、AC 代码 #include<cstdio> #include<algorithm> #include<cstring> #pragma warning(disable:4996) using namespace std; template<class _Ty> inline void manac... 阅读详情

【模板】manacher

题目描述

给出一个只由小写英文字符 a,b,c,…y,z\texttt a,\texttt b,\texttt c,\ldots\texttt y,\texttt za,b,c,…y,z 组成的字符串 SSS ,求 SSS 中最长回文串的长度 。

字符串长度为 nnn。

输入格式

一行小写英文字符 a,b,c,⋯ ,y,z\texttt a,\texttt b,\texttt c,\cdots,\texttt y,\texttt za,b,c,⋯,y,z 组成的字符串 SSS。

输出格式

一个整数表示答案。

样例 #1

样例输入 #1

aaa

样例输出 #1

3

提示

1≤n≤1.1×1071\le n\le 1.1\times 10^71≤n≤1.1×107。

AC代码

#include<bits/stdc++.h>
using namespace std;
string s,oo;
int r,p[110000010],mid,ans;
void sol(string oo){
	s+='~';
	s+='*';
	for(int i=0;i<oo.size();i++){
		s+=oo[i];
		s+='*';
	}
}
int main(){
	cin>>oo;
	sol(oo);
	for(int i=0;i<s.size();i++){
		if(r>i) {
			p[i]=min(r-i,p[2*mid-i]);
		}else p[i]=1;
		while(s[i+p[i]]==s[i-p[i]]) p[i]++;
		if(i+p[i]>r){
			r=i+p[i];
			mid=i;
		}
		ans=max(ans,p[i]);
	}
	cout<<ans-1;
	
	return 0;
} 
洛谷_P3805 【模板】manacher 算法 阅读详情

相关推荐

Anaconda/Miniconda的删除和安装

要在 MacBook 上删除 Anaconda 或 Miniconda,并重新安装它,您可以按照以下步骤进行操作。

qq_27390023的博客 3027

AcWing 3188:Manacher 算法 → 最长回文子串

Manacher算法,谐称马拉车算法,是用于在 O(n) 时间复杂度内找到字符串中最长回文子串的高效算法。

hnjzsyjyj的专栏 1848

把“思考”塞进 1 KB:我用纯 C 语言给单片机手搓了一个微型 Transformer 推理引擎

摘要:本文探讨了在64KB SRAM的MCU(如STM32H743)上部署精简Transformer模型的技术方案。通过将6层Transformer压缩至1层(隐藏维度128)、4-bit KV-Cache量化等优化手段,实现了240KB Flash占用和59KB RAM峰值,推理延迟184ms(400MHz Cortex-M7),准确率96.1%。关键创新包括:手工优化矩阵乘(CMSIS-NN)、查表法Softmax/LayerNorm、权重按Tile重排提升Cache命中率(60%→94%)。

qq_74383080的博客 2923

manacher算法 洛谷P3805 P9606

Manacher 算法,也称为马拉车算法,由美国计算机科学家 Glenn K. Manacher 在 1975 年提出,主要用于解决在给定字符串里查找最长回文子串的问题。相较于普通的暴力解法(时间复杂度为O(n^2),Manacher 算法把时间复杂度优化到了O(n),效率显著提升。

2401_88035400的博客 440

J204B接口数据链路的建立

介绍J204B数据链路层的建立方式

QUACK_G的博客 6549

Java中使用工厂模式和策略模式优雅消除if-else语句(UML类图+案例分析)

在最近的后端开发中,多多少少会发现有很多if-else语句,如果条件过多则会造成整体代码看起来非常臃肿。本篇博客汇总了我对工厂模式和策略模式的理解,以及我是如何把它们巧妙运用在实际项目当中的一些技巧进行了分享,如有问题,欢迎评论区讨论!

黄团团的个人博客 2612

洛谷P3805 【模板】manacher算法

传送门 题目描述 给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入格式 一行小写英文字符a,b,c…y,z组成的字符串S 输出格式 一个整数表示答案 输入 aaa 输出 3 说明/提示 字符串长度len <= 11000000 这个题就是一个马拉车的模板题 具体AC代码如下: /*--------------- author:onebe...

Onebelieve_lxl的博客 371

基于点云数据的统计滤波算法改进

随着三维视觉和点云处理技术的发展,点云数据在机器人、自动驾驶、增强现实等领域得到了广泛应用。而点云数据中常常包含着各种噪声和异常点,这些噪声和异常点会影响后续的数据处理和分析任务。因此,对点云数据进行滤波处理是必不可少的一步。在点云滤波算法中,统计滤波(Statistical Filtering)是一种常见且有效的方法。它通过对点云数据进行统计分析,将噪声和异常点剔除或修复,从而得到更为准确和可靠的点云数据。本文将介绍一种改进的统计滤波算法,并提供相应的源代码实现。

QfcaLinux的博客 292

洛谷P3370 【模板】字符串哈希

一定要记住HASH链表的高端写法!!! 参考了杨婉倩大佬的写法,原来的自己乱搞版WA了70分……#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define ull unsigned long long const int base1=1000007,base2=99859,MOD=69847

五彩蒟蒻DDD的博客 522

目标检测旋转增强源码带方向

解法1: import cv2 import math import numpy as np import os def get_degree(p1,p0): aaa = math.degrees(math.atan2((p1[1] - p0[1]), (p1[0] - p0[0]))) if aaa < 0: aaa = 360 + aaa aaa = (aaa + 90) if aaa > 360: aa...

jacke121的专栏 2085

华为OD机试双机位C卷-几何平均值最大子数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)2026双机位C卷 【几何平均值最大子数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【几何平均值最大子数组】。

qq_45776114的博客 1367

洛谷 P3805 【模板】manacher算法

题目链接 https://www.luogu.org/problem/P3805 分析 manacher算法利用了回文串的对称性质,以此降低了时间复杂度。 具体来说,先在给定字符串中插入特殊字符,保证字符串长度为奇数。 记录以每个位置为中心的回文串的半径(包含中心),已处理的回文串最远涉及到的右端点,及该回文串的中心。 从左往右依次扫描每个位置,若其在最远的右端点左面,则以此为中心的回文串的半径不...

Kevin的博客 232

多周期路径约束(set_multicycle_path )

1.由慢到快的多周期约束 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成...

Arist. 5506

洛谷 P3805 manacher算法 模板题

洛谷 P3805 manacher 模板题 先感谢下这篇blog(本文的两幅图是从上面截取下来的):https://segmentfault.com/a/1190000008484167 实锤模板! 直接讲解下马拉车算法~~~ 回文串是个什么玩意大家应该都懂吧?不懂上度娘搜,一抓一大把 Manacher算法,就是找出一个字符串里面的最长回文串,也就是这个题目要我们求的东西 首先,马拉车有一个预处...

qq_33437973的博客 317

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

洛谷 P3805:【模板】manacher ← 最长回文串

为啥用 if(i<=mr) p[i]=min(p[mid+mid-i],mr-i); 取最小值,而不是取最大值? p[i] = min(...)的意义是:在已知信息下,这个赋值给出了 p[i]的一个安全下界——即 p[i]至少有多大,但可能更大。取最小值,是为了保证这个初始值不超出已验证区域,后续再用 while 循环暴力扩展,探索真正的边界。

hnjzsyjyj的专栏 1822

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【模板·manacher】 洛谷 P3805 【模板】manacher

题目:manacher算法 思路:模板题 代码: #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; #define maxn 22000000 char b[maxn+5],a[maxn+5]; int n; int p[maxn+5]; int main() { scanf(&quot;%s&quot;,b); n=strlen(b); for(i...

iwi 427

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[洛谷P3805]【模板】manacher算法

题目大意:给你一个字符串(长度≤11000000),叫你求这个串的最长回文子串长度。 解题思路:Manacher算法模板题,可以在$O(n)$的时间复杂度里求出一个串的最长回文子串。 不知道Manacher的见:http://www.cnblogs.com/Mrsrz/p/7308621.html C++ Code: #include<cstdio> #i...

130

洛谷-P3805-Manacher模板

链接: https://www.luogu.org/problem/P3805 题意: 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 思路: 马拉车算法. 代码: #include <bits/stdc++.h> using namespace std; const int MAXN = 5e7+10; int h...

weixin_30294021的博客 196

洛谷P3805 [模板]Manacher算法 [manacher]

  题目传送门    题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a,b,c...y,z组成的字符串S 输出格式: 一个整数表示答案 输入输出样例 输入样例#1: aaa 输出样例#1: 3 说明 字符串长度le...

weixin_30498807的博客 109

【洛谷 P3805】 【模板】manacher算法

题目链接 manacher算法:在线性时间内求一个字符串中所有/最长回文串的算法。 先来考虑一下暴力的算法,枚举每个中点,向两边扩展,时间复杂度\(O(n^2)\)。 来分析下此算法的缺点。 1、因为回文串有奇偶之分,所以要分类讨论,\(abba\)的对称轴不在字符上,分类讨论就会有点麻烦。 为此,\(manacher\)算法的解决方案是在每个字符之间插入一个相同的字符,比如说\(\#\), \(...

weixin_33884611的博客 141
上一篇: P1210 [USACO1.3] 最长的回文 Calf Flac
下一篇: 一些好玩的小游戏
GG_Bond...
博客等级 码龄5年 531粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值