技術共有

第14回蘭橋杯地方大会CBグループG 問題[部分文字列略語] 解答(AC)

2024-07-06

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

トピックの一般的な考え方

指定された文字列 sss、キャラクター あ、ば、ば1つの,b、文字列を尋ねる sss 中には何人いますか ああ1つの 始まり bbb 終了部分文字列。

問題解決のアイデア

20ポイント

二重ループを使用して左端点と右端点を列挙し、それが正しいかどうかを判断します。 ああ1つの 始まり bbb 最後の文字列は答えに 1 を加えたものです。

100ポイント

データ範囲が広いため、データ範囲内の時間計算量を制御する必要があります。 O ( n log ⁡ n ) O(nlog n)(見よ) 内で。

フェイ

私たちはすべてを見つける必要があります ああ1つの 始まり bbb 文字列の終わりであれば、各文字に対して行うことができます bbb、 行って見ろよ bbb の左側には何個ありますか ああ1つの、それからこれら a … b ドット b1つのb これは正当な文字列です。特定の位置の左側に何文字あるかを数えます ああ1つの、使用できますプレフィックスの合計アルゴリズムは維持されます。

方法 2

それぞれの文字列全体を反復処理できます。 ああ1つの 文字の右側に何文字ありますか bbb、それからこれら a … ba ドット b1つのb すべて有効な文字列です。特定の位置以降の文字数をカウントする bbb 番号が使えます接尾語の合計アルゴリズムは維持されます。

#include