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

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

ABCリアタイチャレンジ・ABC359(今更)

  • やった回: ABC359
  • 成績: AB2完 / 0ペナ(+未AC14ペナ) / 5:45(ペナ込み)
  • パフォーマンス: 587(推定)

いやぁいくらCが350点だからってこれはね…

A問題: ABC359-A Count Takahashi

atcoder.jp

全部配列に突っ込んでからcountしてもよかったんだけども、という感じ。

B問題: ABC359-B Couples

atcoder.jp

今になって問題文の制約(=同じ色のTシャツを来ている人は必ず2人である)を考えると、自分の2つ隣の人が同じ色であるかだけをチェックすればよいのでは?という感じがする。
あと今回の制約であればansの同じキーの値が複数回更新されることもないので、素直にans += 1とかしちゃっても良いのだよな、とも思ったので、実は Array#count のブロック引数で片付けられたのでは?という気持ちもある。 まぁ業務コードならともかく、競プロのコードでそこまで考えて書くかは微妙だけども……

C問題: ABC359-C Tile Distance 2

(upsolveしたコード)

https://atcoder.jp/contests/abc359/submissions/54852906atcoder.jp

コンテスト中の考察はほぼこのスレッドに集約されている。

「同じタイルの中にいるなら右に居ようと左に居ようと本質的に変わらない」ということまでは理解していたので、じゃあ考えるの簡単にしちゃえ、という発想がもうちょっと欲しかった。

タイルの形状からして縦移動の分は絶対に関所を通らないといけないので、なるべく横移動を縦移動のついでにするようにして、縦移動のついでで吸収できない分を計算で求めるんだけど、そこが取っ散らかって大変なことになってAC出来ずに終わりました。くやしい。

この考え方は「4分で解説」の動画を上げている方の別解解説がとても分かりやすいと思う(いつも助かっています) atcoder.jp