BZOJ2342 Shoi2011ダブル回文

#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
#define N 500010 
チャーT [N]、[N << 1]はSであり; 
INT、N = 0、lenの; 
INT P [N << 1]、G [N << 1]。
ボイドManacher(){ 
    int型POS = 0、X = 0、ID = 0。
    以下のために(INT I = 1、I <N; I ++){ 
        IF(POS> I)のx =分(P [ID * 2-I]、POS-I + 1)。
        他のx = 0; 
        一方、(S [IX] == S [I + X])はx ++; 
        バツ - ; 
        IF(I + X> POS)POS = I + X、ID = I。
        P [I] = X。
    } 
} 
int型のmain(){ 
    scanf関数( "%dの%s"は、&​​lenは、T); 
    S [0] = '!'; 
    以下のために(INT I 0 =; I <LEN; I ++){ 
        S [N ++] = '#'。
        S [N ++] = T [i]は、
    } 
    S [N ++] = '#'。
    Manacher(); 
    int型ANS = 0; 
    以下のために(INT I 0 =、I <N; ++ I)
	     G [I] = P [2 * I + 1] / 2。
    以下のために(INT I 0 =、I <N; ++ I)
        のために(INT J = G [I] / 2; J && J 4 *> ANS; j--)
            IF(G [I + J]> = J && G [IJ ]> = J)ANS = MAX(ANS、4 * J)。
    printf( "%dの"、ANS)。
    0を返します。
} 
ZZ https://blog.csdn.net/dream_maker_yk/article/details/80804663

  https://blog.csdn.net/weixin_43262291/article/details/99697488?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

おすすめ

転載: www.cnblogs.com/cutemush/p/12370089.html