/ 最近 .rdf 追記 編集 設定 本棚

脳log[20230331]



2023年03月31日 (金) [AtCoder] 精進。Sky株式会社プログラミングコンテスト2023(AtCoder Beginner Contest 289)-F「Teleporter Takahashi」(黄 diff)。とにかく取っ掛かりが見つからなかった問題。今日の最初の気付きは X 座標と Y 座標を分離して考えていいのではないかということ。X 座標に限定して考えてみる。グリッドを軸として線対称の位置にしか移動できないので、始点と終点の偶奇が一致していないと絶対に辿り着けないことがわかる。次は1差の2点を順番に使用することで±2単位で移動していけることがわかる。±2という最小単位の移動を繰り返しても許される制約になっていることを確認した。あとはまあ細々(こまごま)と、長方形 R が小さすぎて1差の2点が利用できない場合や、利用できそうに見えて実は始点と一致しているために有効に利用できない場合に注意して。■提出 #40189807 (AC / 781 Byte / 502 ms)。非常に気持ちのいい AC。解けて嬉しい。テストケースがまだ利用できないんだけど、最初の提出 #40189747 が WA×2/TLE×10 だったときは一瞬絶望しかけたよね。サンプル3を通すための 6,7 行目のハック(<<x<<y)が雑だったのと、11 行目の判定が早すぎて 15 行目の前にあるのが良くなかった。たった2要素を得るために 20 万要素の配列を作るのが憚られたので Enumerable#lazy メソッドを初めて使ったよ。■「利用できそうに見えて実は始点と一致しているために有効に利用できない場合に注意して」 嘘だよね。長方形 R に2つきりしかない1差の2点の X 座標(Y 座標)の一方が始点の X 座標(Y 座標)と一致していても±2ずつ移動していけるよね。早とちりで No と答えてる気がするけど、テストケースの甘さに助けられたのか?■まだちょびっとだけ理解が及んでいない部分があるらしい。提出 #40200554 (WA×1)。長方形 R の縦と横の長さを最大限に利用して終点を目指してみたのだけど、1つだけ WA になってしまった。どこに考え漏らしがあるというのか。AC はやはり偶然だったのか。■いいや、大丈夫。完璧だ。提出 #40201186 (AC / 506 Byte / 377 ms)。3行目の SY を SX と間違えていたうっかりミスが 1WA の原因だった。考え漏らしはナシ! 十分に整理して満足のいくスクリプトになった。