Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2294-dcaf0a38
この記事にトラックバックする(FC2ブログユーザー)

UVa 12467 - Secret Word (この記事を編集する[管理者用])

Source

Colombian Collegiate Programming League 2012 (2012-06-03)
UVa 12467

問題概要

長さ10^6以下の文字列Sが与えられる.
Sの部分文字列Tで,Sの最初のlen(T)文字はrev(T)から始まる,という条件を満たす最長のTを求める問題.
len(T)はTの文字列の長さで,rev(T)はTを逆順にしたもの.例えばrev(ABBC) = CBBA.

解法

Tの長さに対する2分探索をする.
Tを固定した時,それがSの部分文字列にあるかどうかは,ローリングハッシュなどを使ってO(len(S))で判定できる.

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/2294-dcaf0a38
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。