🙂

JavaScriptでABC430(A-C)

に公開

https://atcoder.jp/contests/abc430

新ジャッジ回でございます

https://atcoder.jp/contests/abc430/tasks/abc430_a

先にC < Aの場合はNoって答えて弾いておけば、D < BならYes、でなければNoをやるだけになる
不等号の向きで混乱して30秒くらい固まるのをやめたい

https://atcoder.jp/contests/abc430/submissions/70589890

1分29秒 AC!

B - Count Subgrid

https://atcoder.jp/contests/abc430/tasks/abc430_b

Bは愚直……だけど、実装が少々だるい
パターン重複を外すのはSetでやればよくて、[["#", "."], ["#", "#"]]"#.##"みたいに連結順決めてパターンを1つのstringで表せばいい
あとはfor文かいて全パターンに対応するstringを作ればいい なんと4重for

https://atcoder.jp/contests/abc430/submissions/70597902

8分36秒 AC!

C - Truck Driver

https://atcoder.jp/contests/abc430/tasks/abc430_c

たぶん想定解法は尺取法な気がします
……で、久しく尺取を書いてなかったので尺取を調べ直してたんですが、尺取使えるときってだいたい二分探索も使えるよな〜って思い出したので二分探索で書くことにしました。判断が遅い。

i文字目までに"a""b"がそれぞれ何個含まれているか」を表す配列をつくって、左端leftを固定して以下2つをlower_bound相当のもので求めて減算すると「leftを固定したときのとれるrightの数」が出せます。あとは各leftについて足すだけ。

  • S[left]からS[right]"a"の個数がA以上になる最小のright
  • S[left]からS[right]"b"の個数がB未満になる最大のright

https://atcoder.jp/contests/abc430/submissions/70616511

58分19秒 AC!

D-G

  • D: 差分更新なのはわかる 問題はどうやって両隣の人を見つけるかで……
  • E: 環状に文字列を並べてぐるぐる回したいんですけど何をどうやればいいんですか

Perfomance

  • perf : 898
  • レート変化 : 844 → 850 (+6)

感想

C問題もうちょっと早く解きたかったような気がします さっさと二分探索を書きなさいよ
DとEは解説読む限りI don't know this solutionだったので精進かな〜


過去のABCも似たような記事を書いています。よければそちらもどうぞ。

xx1 xx2 xx3 xx4 xx5 xx6 xx7 xx8 xx9 xx0
40x 402 403 404 405 406 407 408 409 410
41x 411 412 413 414 415 416 417 418 419 420
42x 421 422 423 424 425 426 427 428 429

Discussion