- やった回: ABC359
- 成績: AB2完 / 0ペナ(+未AC14ペナ) / 5:45(ペナ込み)
- パフォーマンス: 587(推定)
いやぁいくらCが350点だからってこれはね…
A問題: ABC359-A Count Takahashi
全部配列に突っ込んでからcountしてもよかったんだけども、という感じ。
B問題: ABC359-B Couples
今になって問題文の制約(=同じ色のTシャツを来ている人は必ず2人である)を考えると、自分の2つ隣の人が同じ色であるかだけをチェックすればよいのでは?という感じがする。
あと今回の制約であればansの同じキーの値が複数回更新されることもないので、素直にans += 1
とかしちゃっても良いのだよな、とも思ったので、実は Array#count
のブロック引数で片付けられたのでは?という気持ちもある。
まぁ業務コードならともかく、競プロのコードでそこまで考えて書くかは微妙だけども……
C問題: ABC359-C Tile Distance 2
(upsolveしたコード)
https://atcoder.jp/contests/abc359/submissions/54852906atcoder.jp
コンテスト中の考察はほぼこのスレッドに集約されている。
C、縦移動の回数ぶんは絶対に関所を通らないとダメで、横移動をどのくらい吸収させられるかを計算で求めるという理解をしてたのだけど最後の計算がどうしても思いつかず、考える体力もなく実は15分前に撤退してました…
— あのぶる+@隙あらばサウナに行きたい🦥㌠ (@thatblue_plus) 2024年6月22日
あーそうか、左に詰めたら話がもうちょいだけ簡単になるのか。でもそれだけだとWAが何個か減るだけで多分本質理解にはまだ届かぬ
— あのぶる+@隙あらばサウナに行きたい🦥㌠ (@thatblue_plus) 2024年6月22日
ぬー、解説写経してみたらコンテスト中に考えてた内容で大体合ってはいたんだな、無駄に長々とコード書いてしまってどこかでバグったパターンぽいな。
— あのぶる+@隙あらばサウナに行きたい🦥㌠ (@thatblue_plus) 2024年6月22日
「同じタイルの中にいるなら右に居ようと左に居ようと本質的に変わらない」ということまでは理解していたので、じゃあ考えるの簡単にしちゃえ、という発想がもうちょっと欲しかった。
タイルの形状からして縦移動の分は絶対に関所を通らないといけないので、なるべく横移動を縦移動のついでにするようにして、縦移動のついでで吸収できない分を計算で求めるんだけど、そこが取っ散らかって大変なことになってAC出来ずに終わりました。くやしい。
この考え方は「4分で解説」の動画を上げている方の別解解説がとても分かりやすいと思う(いつも助かっています) atcoder.jp