CF803Dの問題解決

フェイス質問

正解:一道二分大水题!

:なぜ私はできますか?

B:システムの評価は同じああではありません!

:アサリ?

 

通常の状況下で私たちの毎日の練習のウィンドウシステムを使用している、窓の下で、文字列自体は「\ 0」文字「\ 0」文字だけターミネータ文字列保存されています。文字が文字の割り当てがある場合は、文字列がnull文字に直接出力することができます。

(例えばOIまたはいくつかOJなど)は、Linuxの場合には、文字列と文字[]おかげで、単純に「\ 0」が存在しないことができ、及びターミネーターの文字列として。

 

だから、:Linuxでは、ラップは(2回getchar関数を使用する必要があり読んで)、そうでない場合:(されている必要があります)-------> (Linuxの評価ということに提供)(結果)

#include <ビット/ STDC ++ H>
 の#pragma GCCの最適化(2)
 使用して、 名前空間STDを、
int型のk、LEN。
チャー S [ 2000010 ]。
int型ANS;
int型の BO [ 1000010 ]。
int型の NXT [ 1000010 ]。
int型のチェック(INT X)
{ 
    もし(x == 1リターン 1 
    登録INT U = 1 + X。
    登録のint NUM = 0 ; 
    memsetの(BO、0はsizeof (BO))。
    ながら(U <= lenが){            
        レジスタINT TMP = NXTを[U]。
        一方、(!BO [TMP] && TMP = 0 ){ 
            TMP = [TMP] NXT。
        } 
        であれば(TMP == 0 ){
             戻り 0 ; 
        } 
        { 
            BO [TMP] = 1 ++ NUM; 
            Uは TMP + = 1 もし(NUM> k)の戻り 0 
        } 
        U + = X。
    } 
    リターン 1 
} 
ボイド erfen(int型 L、INT R)
{ 
    ながら(!L = R)
    { 
        int型 midd =(L + R)>> 1 もし(チェック(midd))、R = midd。
         L = midd + 1 
    } 
    ANS = L。
} 
int型のmain()
{ 
    CIN >> K。
    K - ; 
    getchar関数(); 
    // getchar関数();// Linuxのレビューで削除注釈PUT場合、2つのGETCHAR()予約済み
    のint NUM = 0 ;
     ながら、1 
    { 
        CHAR CH = GETCHAR();
         IF(CH == ' \ N- 'BREAK ; 
        S [ ++ NUM] = CH; 
    } 
    でlen =のSTRLEN(S用+ 1 );
     int型プリ= 0 ;
     のため(登録INT I = 1。 ;私は= LEN <; I ++は){
         IF(S [I] == '  ')S [ I] = "- " ; 
        NXT [I] = 予備。
        もし(S [I] == ' - ' ){ 
            プリ = I。
        } 
    } 
    erfen(1 、LEN)。
    printf(" %dの" 、ANS)。
}

 

おすすめ

転載: www.cnblogs.com/kamimxr/p/11278651.html