841ハッシュ文字列をAcWing

// すばやく2つの文字列が等しくないかどうかを決定 
する#include <ビット/ STDC ++ H.> 使用して名前空間STD; 
typedefの符号なしのロングロングULLは、
 CONST INT N = 100010は、P = 131であり ; // エラー状態13331経験両方最小INT N-、M;
 CHAR STR [N]; 
ULL H [N]、P [N]; // Hプレフィックスのハッシュ値を示し、Pはパワーである 
ULLのGETint型 L、INT R&LT){
     戻り H 【R&LT] -H [1- 1 ] * P [+ L-R&LT 1 ]; //は、ハッシュ値の一定期間を返す}
 int型のmain(){
   


    CIN >> M >> N-STR + 1 
    P [ 0 ] = 1 ; // P 0 1番目
    のためのINT I = 1 ; I <= N; I ++ ){ 
        P [I] = P [ I- 1 ] * P; // べき乗 
        H [I] = H [I- 1 ] + STR * P [I]; // 検索ハッシュ値のプレフィックス
    }
     ながら(M-- ){
         int型L1、R1、 L2、R2; 
        CIN >> L1 L2 >> >> R1 、R2、
         IFGET(L1、R1)== GET(L2、R2))プット(" はい); // ハッシュ値が等しい場合
        そうプット(いいえ); 
    } 
    戻り 0 ; 
}

 

 

おすすめ

転載: www.cnblogs.com/QingyuYYYYY/p/11828729.html