Educational Codeforces Round 97
Dashboard - Educational Codeforces Round 97 (Rated for Div. 2) - Codeforces
E: Make It Increasing
列を区切ってLISすればOK
F: Emotional Fishermen
順列の数え上げだし挿入DPだろうと決め打って考えたが解けなかった。この問題はよくある挿入DPのようにソートして昇順or降順に要素を埋めながら列を構成するというよりは、前から順に好きな要素で埋めていくという方法がうまくいく。
として最大値が更新される場合とそうでない場合の遷移を考える。累積和を使って高速化すると
G Death DBMS
明らかにAho-Corasickを使ってくれという感じの問題なので使う。するとSuffix Linkからなる木上で、各頂点から根までの最大値を求めるクエリにたくさん答えたくなるのでHLDで殴った。 Editorialで賢い方法が紹介されていた。文字列集合が重複なしであるとすると、Aho-Corasick automatonのあるstateにマッチしうる文字列(suffix linkを辿っていってマッチするもの)の種類数はで抑えられる。なぜかというと各長さの文字列についてマッチしうるのは高々一つなので、となるからである。なので木をexit linkで愚直に根まで辿っていっても程度で通る。