2020年7月2日木曜日

Codeforces Global Round 7

 Dまで四完でした。復習すると、Eが解けないのはまあ仕方ないかな、という気もしてしまう。
 FもACしようと思った(F2は厳しくてもF1は結構解かれているので、F1だけでも)のですが、公式解説を読んでも理解できなかったので飛ばします。無念。

コンテストへのリンク
コンテスト後のツイート

D. Prefix-Suffix Palindrome

 Sの一番最初の文字(prefix)と一番最後の文字(suffix)が同じであれば、それは必ずtに含まれるので、前処理でその部分を求めておく。

 それらを除いたものを改めてSとすると、求めたいものは、「Sのprefixかsuffixになっていて、かつ回文である最長の長さのもの」。これは、Manacherを使うことで求められる。

 Manacherの解説はすぬけさんのブログ記事が有名かつ分かりやすいですね。(ただし、この記事自体は分かりやすいと思いますが、Manacher自体が結構難しいので理解するのはそんなに簡単ではないと思う)

E. Bombs


 アルメリアさんの解説記事を読んでAC。
 問題を正しく把握するのも結構難しいけれど、把握したうえで、

・答えがある値kより大きいか?

 という判定問題にすれば良いと気付くのが難しい。ただ、これさえできれば後は結構自然か。
 クエリが進むごとに答えがだんだん小さくなっていくので、

・尺取り法(風)

 に計算量を抑えることができるのも、なるほど、という感じ。

 解説通り書いて提出したらPyPy3での初ACだったようですが、(非再帰遅延セグ木を持っていれば)計算時間にも余裕があるし、自慢にはなりませんね。

0 件のコメント:

コメントを投稿