manacher模板整理
2024-08-22 22:18:23
//p[]为最长回文半径长度,id为当前最靠右端回文串的中心点(多个取最靠左),mx为id对应的回文串的最右端坐标+1
void manacher(char *s,int len){
p[] = ;
int mx = , id = ;
for(int i = ;i < len ; i ++){
p[i] = mx > i ? min(p[id* - i],mx-i) : ;
while(s[i+p[i]] == s[i-p[i]])
p[i] ++;
if(i+p[i] > mx){
id = i;
mx = i +p[i];
}
}
}
最新文章
- linq to js使用汇总
- 利用jsoup进行模拟登录
- windows下nginx安装、配置与使用
- 自定义dialog自动弹出软键盘
- Java操作PDF之itext入门
- vue指令v-if示例解析
- 2018 .NET开发者调查报告: .NET Core 是怎么样的状态
- SpringCloud微服务架构
- F#周报2019年第13期
- mysql修改用户密码笔记(转)
- CodeForce Div 2 C. Masha and two friends
- mysql表名作为参数传入存储过程
- 《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程
- JS闭包以及作用域初探
- iOS 通知推送APNS
- terminate called without an active exception异常
- Shell学习之Bash变量详解(二)
- python中.py和.pyw文件的区别
- bzoj3815: 卡常数
- 棋盘游戏 HDU - 1281 (删点 二分匹配)