スクリーンショット_2020-01-12_22

ABC151:問題Cと問題DでACとれてよかったが、ミスもあったので反省をする

1月12日に、競技プログラミングサイトAtCoderで開催された競技プログラミングコンテスト「AtCoder Beginner Contest 151」に参加した。

【今回の結果】
順位は約5666人中1930位(上位34%くらい)
レート:648(前回:598 前回比:+50)

全 6 問出題され、問題 A、B、C、D は正解でき、上位35%に入れたのでよかった。しかし、問題 C と問題 D では 1 回ずつ WA を出してしまった。

問題 C でどうして WA を出してしまったのか

問題 C の問題文はこちら

WA の回数の数え方がポイントだったと思う。

【ポイント1】
同じ問題で AC が出た後の WA は数えない。

この【ポイント1】は入力例 1 を見たらわかるので OK。

【ポイント2】
AC が出ていない問題の WA は数えない。

問題文には以下のように、

高橋君のペナルティ数は、高橋君が AC を 1 回以上出した各問題において、初めて AC を出すまでに出した WA の数の総和です。

とあるので、【ポイント2】を読み取る必要がある。この【ポイント2】を見落としていて WA。引っかかってしまった。
引っかかりポイントが「同じ問題で AC が出た後の WA は数えない」だけだろうという決めつけとか、早く AC とりたいという気持ちがダメだったんだろうな。

問題 D でどうして WA を出してしまったのか

問題 D の問題文はこちら

この問題はスタート地点とゴール地点を全パターン試すというゴリ押しでなんとかACがとれた。しかし、このゴール地点の指定方法として、以下のような条件を足していた。

【正しくない条件】
スタート時点の x 位置とゴール地点の x 位置は異なる
かつ
スタート時点の y 位置とゴール地点の y 位置は異なる

この【正しくない条件】だとゴール時点にすべきところも条件を満たさないことになって良くない。これで WA。正しくは以下のようになる。

【正しい条件】
スタート時点のx位置とゴール地点のx位置は異なる
または
スタート時点のy位置とゴール地点のy位置は異なる

しかし、この問題はゴール地点はスタート地点から最も遠いところにすべきなので、ゴール地点を決める必要はない(勝手に決まる)ので、ゴール地点を全パターン試すという余計なループをしていたという WA 以外の大きな反省点がある。

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

スキありがとうございます!
2
三重県伊勢市でiOS・AndroidアプリのUX設計・UIデザイン・実装、Webサイト、Webアプリの情報設計、UIデザイン、実装を行なっています。また、競技プログラミングに参加したり、読書をしたり、2羽の文鳥と遊んだり、写真を撮ったり、洋菓子を作ったりしています。

この記事が入っているマガジン

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。