贴个manachar模板
来源:互联网 发布:mac相簿和相册的区别 编辑:程序博客网 时间:2024/06/05 10:43
const int maxn=1000010; char str[maxn];//原字符串 char tmp[maxn<<1];//转换后的字符串 int Len[maxn<<1]; //转换原始串 int INIT(char *st) { int i,len=strlen(st); tmp[0]='@';//字符串开头增加一个特殊字符,防止越界 for(i=1;i<=2*len;i+=2) { tmp[i]='#'; tmp[i+1]=st[i/2]; } tmp[2*len+1]='#'; tmp[2*len+2]='$';//字符串结尾加一个字符,防止越界 tmp[2*len+3]=0; return 2*len+1;//返回转换字符串的长度 } //Manacher算法计算过程 int MANACHER(char *st,int len) { int mx=0,ans=0,po=0;//mx即为当前计算回文串最右边字符的最大值 for(int i=1;i<=len;i++) { if(mx>i) Len[i]=min(mx-i,Len[2*po-i]);//在Len[j]和mx-i中取个小 else Len[i]=1;//如果i>=mx,要从头开始匹配 while(st[i-Len[i]]==st[i+Len[i]]) Len[i]++; if(Len[i]+i>mx)//若新计算的回文串右端点位置大于mx,要更新po和mx的值 { mx=Len[i]+i; po=i; } ans=max(ans,Len[i]); } return ans-1;//返回Len[i]中的最大值-1即为原串的最长回文子串额长度 }
阅读全文
0 0
- 贴个manachar模板
- manachar 模板
- manachar模板
- 最长回文串(manachar算法)模板
- Manachar算法
- 无聊贴个KMP模板
- 贴个模板,POJ 1511
- hdu 5371 manachar
- manachar算法学习笔记
- HDU 3294 (manachar)
- HDU 4513 (manachar)
- [BZOJ3790]神奇项链-manachar
- Bzoj2084:[Poi2010]Antisymmetry:manachar算法
- bzoj 2084: [Poi2010]Antisymmetry manachar
- 99个网页模板
- 3个背包模板
- 存个KMP模板
- 发个模板引擎
- 修改表名称
- Dapper的基本使用
- 微信推送模板信息接口(干货-代码)
- unity瞬移最简单的方法
- 解决file美化后在IE中的两个bug
- 贴个manachar模板
- 我是一个垃圾收集器——上篇
- Lambda表达式
- docker 学习地址
- struts2 2.3.32 升级至2.5.10.1
- express 的 mvc 模式
- ajax不走success
- ++a 和 a++的区别
- python里查看string的常量字符串