☺️

JavaScriptでABC416 (A-D)

に公開

https://atcoder.jp/contests/abc416

A - Vacation Validation

https://atcoder.jp/contests/abc416/tasks/abc416_a

LからRまでforループを回して、xが来たらreturnで早期離脱してあげればいいかと

https://atcoder.jp/contests/abc416/submissions/67910156

1分23秒 AC!

B - 1D Akari

https://atcoder.jp/contests/abc416/tasks/abc416_b

Bは愚直……愚直?やることは単純ではある

Daily Akariの1次元版ってことだな?!
.が来たときにoを置く、それ以降は#が来るまでoを置かない」でクリアできますね

https://atcoder.jp/contests/abc416/submissions/67917338

5分06秒 AC!

C - Concat (X-th)

https://atcoder.jp/contests/abc416/tasks/abc416_c

今回はCが愚直ですね

並び替える対象を全列挙するのが大変ですね
私はbit全探索の要領で、「N進数K桁以下の数(をK桁になるよう0埋めしたもの)のi桁目がi番目に選んだ文字」みたいな列挙の仕方をしました

列挙したら辞書順に並べるのはArray.prototype.sort()にぶん投げればよくて、あとは0オリジンなことだけ注意するくらいでしょうか

https://atcoder.jp/contests/abc416/submissions/67927539

んあ?(RE)
……1進数ねーじゃん!

N=1ならS[0]K個並べたものがN^K個できるだけなので、S[0]K個並べたものを答えるように事前処理を追加します。

もったいねえ〜

https://atcoder.jp/contests/abc416/submissions/67930909

18分55秒 AC! (1ペナ)

D - Match, Mod, Minimize 2

https://atcoder.jp/contests/abc416/tasks/abc416_d

事実上「Aから1つ、Bから1つ好きなものを取り出してmod Mをして余った数字を足すとき、その最小はいくつ?」ですね
で、制約を見ると、どう選んでもa + b < 2Mなので、a + b \ge Mとなる回数がなるべく多くなるように選べば良さそうです。

// やること
// - 変数countを用意して0で初期化する
// - 両方の配列が空になるまで以下を繰り返す
//     - Bがすでに空ならループ終わり
//     - (並び替え後の)AとBの末尾をpopで持って来る(a, bとする)(undefinedは0扱い)
//     - a+b>=Mなら
//         - countを1増やす
//     - そうでないなら
//         - aを(並び替え後の)Aの末尾に戻す(push)
// - このとき、Aの合計+Bの合計-(count*M)が答えになると思う

https://atcoder.jp/contests/abc416/submissions/67948978

51分09秒 AC!

E-G

わからんよ〜
Eはワーシャルフロイドっぽいな〜とは思いましたがTLE


Perfomance

  • perf : 1089
  • レート変化 : 789 → 823 (+34)

感想

緑戻ってきました!!偉い
Cで1ペナ食らったのがもったいないですが、まあDまで1時間以内で解けたら上出来でしょう

グラフクラスは用意しといたほうが良さそうだね


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

Discussion