洛谷 P3805 manacher算法
链接:https://www.luogu.org/problemnew/show/P3805
思路:模板,直接上马拉车
代码:
1 //#include<bits/stdc++.h> 2 #include<iostream> 3 #include<vector> 4 #include<stack> 5 #include<string> 6 #include<cstdio> 7 #include<algorithm> 8 #include<queue> 9 #include<map> 10 #include<set> 11 #include<cmath> 12 #define inf 0x3f3f3f3f 13 using namespace std; 14 typedef long long ll; 15 const ll M = ll(1e7) * 3 + 5; 16 string s; 17 string s2; 18 ll len[M]; 19 string init(string s) 20 { 21 s2.clear(); 22 s2 += '@'; 23 for (ll i = 0; i < s.size(); i++) 24 { 25 s2 += '#'; 26 s2 += s[i]; 27 } 28 //s2 += s[s.size() - 1]; 29 s2 += '#'; 30 // s2 += '$'; 31 // s2 += '\0'; 32 return s2; 33 } 34 ll Manacher(string s) 35 { 36 ll p0 = 0, mx = 0, ans = 0; 37 for (ll i = 1; i < s.size(); i++) 38 { 39 if (i < mx) 40 len[i] = min(mx - i, len[2 * p0 - i]); 41 else 42 len[i] = 1; 43 while (s[i - len[i]] == s[i + len[i]]) 44 len[i]++; 45 if (i + len[i] > mx) 46 { 47 mx = len[i] + i; 48 p0 = i; 49 } 50 ans = max(ans, len[i]); 51 } 52 return ans - 1; 53 } 54 int main() 55 { 56 while (cin >> s) 57 { 58 s = init(s); 59 //cout << s << endl; 60 cout << Manacher(s) << endl; 61 } 62 return 0; 63 }
备注:在初始化原串的时候要注意还需要再加一个不同的字符,我这里用的是@,防止马拉车的时候上溢,详情可见这篇博客
转载于:https://www.cnblogs.com/harutomimori/p/10660935.html
洛谷 P3805 manacher算法相关推荐
- 洛谷题单 算法1-3 暴力枚举
1 First Step (ファーストステップ) 题目背景 知らないことばかりなにもかもが(どうしたらいいの?) 一切的一切 尽是充满了未知数(该如何是好) それでも期待で足が軽いよ(ジャンプだ!) ...
- 洛谷P2312 秦九韶算法求多项式点值
题意: 给出序列[a1,a2,a3,...,an][a_{1},a_{2},a_{3},...,a_{n}][a1,a2,a3,...,an],求出下列方程在区间[1,m][1,m][1,m] ...
- 洛谷题单 算法1-1 模拟和高精度
1 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中 ...
- 洛谷题单 算法2-1 前缀和与差分
前缀和是一种重要的预处理,能大大降低查询的时间复杂度,而差分则是一种和前缀和相对的策略. 海底高铁 题目背景 大东亚海底隧道连接着厦门.新北.博艾.那霸.鹿儿岛等城市,横穿东海,耗资1000亿博艾元, ...
- 【洛谷题单算法1-1】P1042\P2670\P1563\P1601
P1042 [NOIP2003 普及组] 乒乓球 题目描述 华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在 11 分制和 21 分制下,双方的比赛结果(截至记录末尾). 比 ...
- 字符串-Manacher算法(你知道马拉车算法吗?)
文章目录 原理 奇偶问题 p[]数组 马拉车求p[] 模板 例题 P3805 [模板]manacher算法 P1659 拉拉队排练 原理 马拉车算法当然不是马拉着车的奇奇怪怪的东西,是Manacher ...
- 洛谷专题训练 ——【算法1-1】模拟与高精度
洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...
- P3805 【模版】manacher算法(manacher)
P3805 [模版]manacher算法 题目描述 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 字符串长度为n 输入输出格式 输入格式: 一行小写英文字符a ...
- 【c++算法刷题笔记】——洛谷2
1. 洛谷练习--P1579 哥德巴赫猜想(升级版) 题目描述: 现在请你编一个程序验证哥德巴赫猜想. 先给出一个奇数n,要求输出3个质数,这3个质数之和等于输入的奇数. 输入格式: 仅有一行,包含一 ...
最新文章
- 设置VSCode快速切换多个项目窗口的快捷键Alt+E
- css新闻列表优化-突破思维新方法更利于搜索引擎
- hdu 4148 Length of S(n) (坑爹的规律题)
- 一文读懂全系列树莓派!
- AI in RTC 创新挑战赛,决赛打响
- 按揭买的房,房产证为什么要放在银行,自己要用房产证怎么办?
- 个人作业——福大微信公众号使用评测
- [vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解
- 查看mysql的安装信息
- Exchange 2010与Exchange Online混合部署PART 1:添加域名
- 2021-02-13
- 配置idea开发go编程语言并配置导入本地包
- php聊天室把数据存在缓存里,php聊天室信息存储的问题
- 彻底删除BootCamp Windows分区和合并到Mac分区中教程
- 动态桌面软件测试简历,动态壁纸软件横评
- 计算机的分区原理,电脑真的需要分区吗?别被“常识”骗了
- 如何编写jnlp文件
- Python-随机生成20位数字
- abs传感器电压有几伏电_汽车ABS传感器的正常电阻值一般为多少呢 还有没有其它检测方法呢 还有它的信号线怎么检测 一般...
- 英语四六级及考研语法(学习方法)