Dash(AtCoder)
from ABC303
Dash
https://atcoder.jp/contests/abc303/tasks/abc303_c
t6o_o6t.icon
Pythonでappendを避けることは可能か?
なるべく避けたい
AtCoderでは入力の長さが分かっていることが多いので
ハッシュで存在確認を高速化したい
itemsというリストでアイテムを管理しようとした
itemsに特定座標が存在することを高速に確認できる必要がある
Pythonのinでは遅いのでは?
Pythonのsetだと$ O(1)なんだって
Pythonのlistだと$ O(n)
Pythonでリストの要素の存在確認を高速にしたいときはsetを検討する
なんでWAなのかわからないー
問題条件を見落としているパターンを今後を通して網羅しよう
あらゆる見落としパターンを網羅した人間、ほぼ絶対に見落とさない
解説の模範解答コードを読んで理解した
アイテムを「消費」しないといけなかった
アイテムのイメージを考えるとこれは当然だが
原因
用語「アイテム」を理解できていなかった
最初は体力を「一定値回復する」ものだと思っていた
そうしたら、体力を「一定値にする」ものだった
ここでわからなくなった
体力をKにするものとして認識していた
AtCoderでは独自用語による問題説明が展開されるケースが多いので、まず各用語の意味を抜き出すことが重要だと思う
正しく理解できるまでは手を付けるべきではない
理解するために手を動かすのは可
もやもやする感覚を残したまま手を付けてはいけない、ということ
ただどこが分からないのか判断できるならこんなに話は難しくならない
普通何が分からないのかは分からないものだ
悲しいが、仕方がない
これがあれば300点だった
この300点を取り返すようにこれからも続けよう
AC.icon
https://atcoder.jp/contests/abc303/submissions/41779715
たった1行の有無でWAした例でした
itemsというsetから、消費したアイテムの座標を削除するというだけ
WA.icon
max(next_health, K)と書こうとした
条件分岐を忘れている
問題を1行ずつ読めないものか?
経験値ですね
自分でもこのミスはどうかしてると思うけど
原因を考えても多分脳機能の問題なので、経験で自然と意識するしかない
AC.icon
https://atcoder.jp/contests/abc303/submissions/42009910
ひどい思い込みだった
UはY座標を減算し、Dは加算すると思っていた
座標の取り方が間違い
想像してた軸の方向
↓→
実際
↑→
これ、文章が正しく読み取れないということでは?
読み取れる
目を通す
疑問点を無くす
読み取るプロセスを確立したい、そのためには、「ここには何が書いてあったか」という疑問をすべて解消してから解く必要がある
正しく経験を積もう