F -最小長HUST - 1010
トピックへのリンク:https://vjudge.net/contest/70325#problem/F
トピック:
Aの長さが1,000,000未満である文字列A.があります。私は何度も何度もそれを書き換えます。それから私は、新しい文字列を得た:AAAAAA ......、あなたの文字列Bを与えるあなたが私に最短の文字列Aの長さを伝えることができ、今、私は2つの異なる位置からそれをカットし、その後、新しい文字列Bを取得します
例えば、A = "ABCDEFG"。私はABCDだ efgabcdefgabcde あなたが最短A.見つける必要があり、Bから文字列Bとしてefgabcdefgabcde:その後、私は赤い部分をカット.... fgabcdefgを
InputMultiplyテストケースを。
各ラインについてのみ、小文字と大文字のキャラを含む文字列Bがあります。
Bの長さは1,000,000以下です。
入力above.Sample説明したように、各行、出力整数、OutputFor
例えば、A = "ABCDEFG"。私はABCDだ efgabcdefgabcde あなたが最短A.見つける必要があり、Bから文字列Bとしてefgabcdefgabcde:その後、私は赤い部分をカット.... fgabcdefgを
InputMultiplyテストケースを。
各ラインについてのみ、小文字と大文字のキャラを含む文字列Bがあります。
Bの長さは1,000,000以下です。
入力above.Sample説明したように、各行、出力整数、OutputFor
bcabcabの efgabcdefgabcdeサンプル出力
3 7
質問の意味:の最小サイクル長セクション検索
のアイデア:今ので、提出の質問はサポートしていない、N-次の[N]でKMPは、最小サイクルの長さの部分で、私は私が書いたものを掲載しました
// // 2019年8月15日にHJYLによって作成されます。 // する#include <iostreamの> の#include <ベクトル> の#include <マップ> 書式#include < 文字列 > の#include <キュー> の#include <スタック> の#include < セット > の#include <アルゴリズム> 書式#include <cstdioを> する#include < CString> の#include <cmath> の#include <cstdlib> 使用して 名前空間はstdを、 const int型 MAXN = 1E6 + 10 。 int型nextt [MAXN]。 ボイドGETNEXT() { int型 I = 0、J = - 1 。 nextt [ 0 ] = - 1 。 INT、N = STRLEN(STR)。 しながら、式(I < N) { 場合は - (J == 1 || STR [I] == STR [J]) { iが ++、J ++を。 もし(!STR [I] = STR [J]) nextt [i]は = jで。 他 nextt [I] = nextt [J]。 }他の J = nextt [J]。 } } int型のmain() { // freopenは( "C:\\ユーザー\\ asus567767 \\ CLionProjects \\タイトルなし\\テキスト"、 "R"、STDIN)。 一方、(〜のscanf(" %sの" 、STR)) { GETNEXT()。 INT LEN = STRLEN(STR)。 printf(" %d個の\ n "、len- nextt [LEN])。 } 戻り 0 。 }