単語のP3435 [POI2006] OKR-期間

I仏、いくつかの特定のトピックKMP分析のために午後に先生を請う、私はまだ私の最後の夜を覚えて2つのKMPの読解力の恐怖は(私も苦手という可能性も、もちろん...)私をもたらしました

1を読みます...

私もあなた、本当に、この問題は、TMは、科学の学生がpであるためには、言語の問題であり、それはボードをノックし、総ANS変数統計情報を追加するために、TJの助けを借りて問題を理解する45+分かかったし、その後15分でしょう意味します?

だから、ラオス嘉はまだ言語を教えるために、私たちは道で、私たちの理解に、質問のすべての種類は、不可解な顔見るレッスンとの時間を費やす必要があります。

1の#include < 設定 >
 2の#include <地図>
 3の#include <リスト>
 4の#include <キュー>
 5の#include <積層体>
 6の#include < ストリング >
 7の#include <cmath>
 8の#include <ctimeの>
 9#含む<ベクトル>
 10の#include <ビットセット>
 11の#include <メモリ>
 12の#include <ユーティリティ>
 13の#include <cstdioを>
 14の#include <sstream提供さ>
 15の#include <iostreamの>
 16の#include <cstdlib>
17の#include <CStringの>
 18書式#include <アルゴリズム>
 19  使って 名前空間はstdを、
20  
21  INT N。
22の 長い 長いANS;
23  INT次の[ 1000010 ]。
24  チャー Y [ 1000010 ]。
25  
26  ボイドZY(){//预处理次数组
 27      のためにint型 I = 1、J = 0 ; iは<、n iは++ ){
 28          ながら(J> 0!&& Y [I] = Y [J]){
 29              J = 次の[J]。
30          }
31は、         IF(Y [I] == Y [J]){
 32              J ++ ;
 33である         }
 34が          次に[Iは+ 1 ] = J;
 35      }
 36  }
 37  
38である ボイドKMPMatch(){// KMPボード、出力としてANSを追加します答え
 39      のためにINT I = 1、J、I <= N; I ++ ){
 40          Jが= I;
 41は         、一方(!次に[J] = 0 ){
 42は              J = 次に[J];
 43である         }
 44が         IF (次へ[I]){
 45             次の[I] = J;
 46である         }
 47          ANS + I- = J;
 48      }
 49  }
 50  
51である INT メイン(){
 52は      scanfの(" %のD "、およびN-);
 53である      CIN >> Y; //読み取り
 54      ZY();
 55      KMPMatch();
 56である      のprintf(" %のLLD " 、ANS); //出力、longlongs使用することを忘れない
 57であるが }

私が何を言うの?ボードはありませんか?我々はこの問題を満たしている場合は診察室を理解することはできません死んで損失ではないでしょう。

おすすめ

転載: www.cnblogs.com/hahaha2124652975/p/11137553.html