イノたまごラボ・あのぶる の「こんなの作ったよ!」

「イノたまごラボ」はひとり同人サークルのようなものです。今のところ同人誌は作っていませんが、ソフトウェアからイベントまで、心惹かれたものを細々と。

ABC全部やるチャレンジ・ABC305

全体の進捗

  • やった回: ABC305
  • 成績: AB2完 / 0ペナ(未ACで4ペナ)/ 6:48(ペナ込み)
  • 推定パフォーマンス: 240 😇

方針立てるのはそんなに難しくなかったんだけど、実装が重くてつらかった。
さらに基本方針は合っていたのに変な実装ミスで2完という、悪い意味で大変私らしい結果となりました。

悔しいけどこのずっこけが本番じゃなくてよかったと心から思っています、ratedでやった日には翌週のコンテストまでに立ち直れる気がしない……

A問題: ABC305-A Water Station

atcoder.jp

n.divmod(5)で「何番目(0-index)までの給水所に到達したか(div)」「直近の給水所を通過してから何km過ぎているか(mod)」を取り、modが2km以下であれば手前の給水所、3km以上であれば次の給水所までの距離を答える。

B問題: ABC305-B ABCDEFG

atcoder.jp

Aから各点までの距離の配列を作っておいて引き算をする。絶対値を取ればどっちが先に来てもOK。

(upsolveコード) atcoder.jp

基本方針は合っていたのに実装ミスで取れなかった悔しすぎるやつ。

受け取った入力からそのまま↓を探していくと、探索1回で見つけられる

  • 同じ段の中でクッキーが一度なくなったあとまたクッキーが出てきたところを探す
  • クッキー最上段両端の座標を持っておいて、2段目以降の両端を都度比較する
    • 最上段が足りないパターンと、2段目以降が足りないパターンがあるのに注意

概ね合ってたんだけど段の中のクッキー末端を探すときのコードがミスってた。

↓こうならないといけないんだけど

end_of_cookies = [i, j - 1] if !start_of_cookies.nil? && end_of_cookies.nil?

↓こうなってて、クッキー末端を検出したあともずっとend_of_cookiesを更新してた。

end_of_cookies = [i, j - 1] unless start_of_cookies.nil?

業務コーディングも含めた個人的な経験則として、こういうときの原因はしょうもない内容のバグだろうということは分かっているのですがどうしても自力で原因が分からず、諦めてWAしてるテストケースを引っ張ってきてデバッグ出力仕込みまくって原因が分かったときは自分で自分を罵りたくなりました…

最初のコードで投げてみたらWA2個だったんだけど、間違えた内容を考えると逆になんで2個で済んだの…?

D問題: ABC305-D Sleep Log

(upsolveコード) atcoder.jp

基本方針は合っていたのに(ry

累積和のド典型だと思う。ド典型だと思うんだけど、寝ている間のタイミングを指定されたときの処理で面倒な方を選んでしまったみたいで最初の提出にWAが付き、C問題に時間をかけ過ぎた影響でそのまま時間切れ。着手した時間を考えると提出1回出来ただけでも頑張ったとは思うんだけど、せめてもう少し時間かけて考えたかった…