SQ-poj3461 oulipu

フランスの作者ジョルジュ・ペレック(1936-1982)は、かつての手紙なしで、書籍、ラディスパリションを書いた  「E」彼はウリポグループのメンバーでした。書籍からの引用:

すべては、通常のペアを持っていましたが、偽の自分自身を主張しました。すべては最初に、そして、腹立たしいを非人間的に発生した、通常のフェアを持っていました。彼は小説はいつでも彼の想像力を彼のカーペットの加害者をかき混ぜる統一基づいていた団体、タブーの直感、の暗い悪のビジョンを知りたいと思った空いているものを、言わない:ビジョン、すべてが正常な見えたが、その理由を廃止し、すべてを、忘れコマンダーAVISION ...

Perecは、おそらく、次のコンテストに高い(というか、低い)得点だろう。人々は、できるだけ与えられた「言葉」のように、いくつかの出現でいくつかのテーマにおそらく意味のある文章を書くことが求められます。私たちの仕事は、競合他社のランキングを得るために、これらの発生を数えるプログラムで陪審員を提供することです。これらの競合他社は、多くの場合、ナンセンスな意味を持つ、非常に長い文章を書きます。50万連続した一連の  「T」 sのは珍しいことではありません。そして、彼らはスペースを使用することはありません。

だから我々はすぐにどのくらいの頻度単語、すなわち、与えられた文字列を検索する、テキストで発生します。より正式:アルファベット{所与「A」、  「B」、  「C」、...、  「Z」 }とそのアルファベット上の2つの有限列、単語  W  とテキスト  Tの出現回数カウント  Wを  中に  TWのすべての連続した文字は正確にの連続した文字と一致しなければなりません  Tを発生が重複してもよいです。

入力

入力ファイルの最初の行は、単一の番号が含まれている:テストケースの数が追従します。各テストケースの形式は次のとおりです。

  • ワードの一つのライン  W、{上の文字列'A' 、  'B' 、  'C'、...、  'Z' 1≤有します}、| W | ≤万(ここでは| W |文字列の長示し  Wを)。
  • 1本のテキストと線  T、上列{ 'A' 、  'B' 、  'C'、...、  'Z' }、と| W | ≤| T | ≤1,000,000。

出力

単語の出現回数:入力ファイル内のすべてのテストケースのために、出力は、単一の行に、単一の番号を含まなければならない  W  テキストで  T

サンプル入力

3 
BAPC 
BAPC 
AZA 
AZAZAZA 
VERDI 
AVERDXIVYERDIAN

サンプル出力

1 
3 
0 

ここでKMPの例として。
int型のnt [ 1000005 ]。
文字列T、W; // W是模式串、T是匹配串
 ボイドのinit(){ 
    memsetの(NT、0はsizeof (NT))。
    int型 L = t.length()、J( - 1)、I = 0 
    NT [ 0 ] = - 1 一方、(!I = L){
         もし - (J == 1 || T [I] == T [J])
            [NT = ++ iは++] ; J
        他の J = NT [J]。
    } 
} 
int型KMP(){
     int型 LW(w.length())、LT(t.length())、I =0、J = 0、CNT(0 )。
    一方、(!I = LT && J = LW){
         もし(T [I] == W [J] || jは== - 1  ++ I、++ J。
        他の J = NT [J]。
        もし(J == LW){ 
            CNT ++ 
            J = NT [J]。
        } 
    } 
    戻りCNT。
}

 

おすすめ

転載: www.cnblogs.com/wengsy150943/p/10991212.html