2026/4/11 20:40:17
网站建设
项目流程
php网站开发电子书,大型网站建设公司制作网站,桥头网站建设,添加qq好友的超链接做网站Manacher
回文字符串是指正反读法完全相同的字符串。Manacher算法通过O(n)O(n)O(n)时间复杂度的计算#xff0c;可以高效确定以每个字符为中心的最大回文半径。
我们采用动态规划算法进行求解。假设已经计算出0到 i 位置的回文半径#xff0c;如何递推求解i1位置的回文半径可以高效确定以每个字符为中心的最大回文半径。我们采用动态规划算法进行求解。假设已经计算出0到 i 位置的回文半径如何递推求解i1位置的回文半径核心思想是利用已有信息进行状态转移。当 i1 位置位于某个已知回文串设其中心为 j 的覆盖范围内时可以借助对称性取 i1 关于 j 的对称位置 k 的回文半径作为初始值。否则i1 位置的回文半径初始值设为 1 (仅包含自身字符)。接下来进行边界检查若 i1 位置的回文半径仍有扩展空间则继续向外扩展需注意时间复杂度控制。为统一处理奇偶长度的回文串我们在字符间和字符串首尾插入特殊分隔符。P3805 【模板】Manacher入门的题面字数提高组的内容。#includebits/stdc.husingnamespacestd;chara[11000005],c[22000005];intp[22000005];intmain(){cina;intnstrlen(a);c[0]#;for(inti1;in*2;i2){c[i]a[i/2];c[i1]#;}n*2;n;string bc;intmx1,len0,rr0;for(inti1;in;i){if(irr){p[i]min(rr-i,p[len*2-i]);}intli-(1p[i]);intri(1p[i]);while(l0rnb.at(l)b.at(r)){l--;r;p[i];}if(p[i]rr-len){leni;rrip[i];}mxmax(mx,p[i]);}coutmx;return0;}