我被家暴了(学习讨论补档)
2026-05-10 11:26:54
发布于:广东
我缩在沙发角,像只被逼到绝境的猫。客厅里,酒瓶碎裂的声音和母亲扭曲的咒骂混成一片。“都是你这个扫把星害的!”她抄起半截啤酒瓶,眼底是骇人的红。我僵着没躲,以为这次还能像往常一样熬过去。谁知她猛地扑过来,指甲几乎抠进我胳膊肉里,力道大得像是要把我撕碎。下一秒,火辣辣的剧痛炸开——我妈一巴掌拍在我脸上,竟然直接爆出了manacher的肥美食用方式🤣🤣🤣
首先说一下我对manacher的理解,我们普通的做法是直接将每一个位置都从起点向外面扩算,这就导致了一个问题,很多位置已经被算过了,结果又被算了一遍,这样会损失很多时间,非常难受,那咋办呢?那当然是摆好姿势请出你的manacher爸爸让他爽爽抄一抄,举个栗子
字符串abba非常欲求不满,
manacher插进去了 字符:# (OMG)**哦齁齁齁齁齁齁齁齁齁齁齁齁❤️❤️❤️❤️**(?)
于是,字符串的第一次变成了#a#b#b#a#
这样所有的回文就都变成奇数长度,不用再去分烦人的奇偶回文,随便贴个代码
for(int i=1;i<n-1;i++){
//1.找i关于center的对称点
int j=2*center-i;
//2.如果i在right左边,就可以镜像爽超一波
if (i<right){
p[i]=min(right-i,p[j]);
}else{
p[i]=1; //否则只能从长度为1开始
}
//3.继续暴力向外扩展(抄完再自己试)
while(s[i+p[i]]==s[i-p[i]]){
p[i]++;
}
//4.更新最右回文
if(i+p[i]>right){
center=i;
right=i+p[i];
}
}//桀桀桀桀 KP是不会打空格的❤️💕
然后就是最肥美的一步
p[i]=min(right-i,p[j]);
再然后,你就可以挑战黑题了
(想抄题解的有福了,kp也不会写这道题,总感觉这题怪怪的)
全部评论 3
6666
3天前 来自 浙江
0让他爽爽抄一抄
???
3天前 来自 上海
0随便顶
3天前 来自 广东
0




























有帮助,赞一个