void manacher(){ s[0]='#'; int mx,id;mx=id=0; for(int i=1;i<=n;i++){ p[i]=mx>i?min(mx-i,p[(id<<1)-i]):1; while(s[i+p[i]]==s[i-p[i]]) p[i]++; if(i+p[i]-1>mx){ //去掉-1 mx=i+p[i]-1; //去掉-1 id=i; } a[(p[i]-1)<<1|1]++; } }
不去掉减1,去掉减1都能过掉这题,这两个写法都是对的吗?