ブログ名

競技プログラミングやお歌のお話をする高菜です。

Codeforces Round #619 (Div. 2) 解法

コンテストページ

https://codeforces.com/contest/130

✔A - Three Strings

a[i]==c[i] or b[i]==c[i] がすべての場所で成り立っているかどうかを確かめればよいです。

✔B - Motarack's Birthday

-1 と隣接しているものを列挙して、それの最大と最小の平均にするとよいです。

✔C - Ayoub's function

n-m を('0' の数)m+1'1' の間の数)箇所になるべく均等に散らしましょう。商と余りを使います。

✔D - Time to Run

  • 次のものを h-1 回です。
    • 'R' が w-1 個
    • "DUL" が w-1 個
    • 'D' が 1 個
  • そして 'R' を w-1 個
  • 'L' を w-1 個
  • 'U' を h-1 個です。

圧縮パートいります? という気持ちになったのですが、たしかにこれがなければそのときに行ける場所に適当に行くだけで絶対に詰みませんから、仕方がありません。

✖E - Nanosoft

'G','Y','R','B' それぞれに関してそれぞれの方向に、どれだけ四角く伸びているかを DP して、それらの Min を計算です。すると与えられた範囲で大きさ x が作れる条件は、x くらい小さくした範囲での Max が x 以上であることですから、二分探索が出来ます。

計算量です。Max( N, M ) を L と表しましょう。累積和と二次元セグツリーの構築は Θ( L ^ 2 ) です。取得クエリは 1 回あたり Θ( (lg L) ^ 2 ) ですから、二分探索をして、Θ( (lg L) ^ 3 ) です。合わせると Θ( L2 + Q * (lg L) ^ 3 ) です。間に合うわけがありません。(はい!?)

f:id:ngtkana:20200214015652p:plain

ツイッターのご様子

E

難しそうです。

え〜〜、間に合うのですね。これが徳の違いということでしょうか。ぐぬぬ……