Toy と帽子と ADP BE

主にプログラミングに関わる話をゆるくエモくやっていきます

AtCoder 三井住友信託銀行プログラミングコンテスト2019

5AC7WA。

これが痛すぎた。

各問題

A - November 30

これは日の方はどうでもよくて、月を見て変わっていたら月末日で、変わっていなかったら月末日ではないです。

(追記)editorialをみてひっくり返りましたが、D2が1かどうかを見るだけでしたね・・・。これに気づかないのは恥ずかしい。

B - Tax Rate

1.08を掛けたらN付近になる数を一通り調べて、Nになったらそれを出力、どれもNにならなかったら":("を出力です。 別に何も考えずXを1から順にX*1.08がNを超えるまで回す、でよいです。(私はそうしました)

できてみれば簡単なんですが、私はText(cat)で投げてしまい1WAと(以前のが残っていた・・・)、なぜか端数処理を難しく考えて1WA出すという始末・・・。

C - 100 to 105

どれか1つだけ買ったときの値段は100から105の間です。2つ買ったときの合計は200から210の間です。3つ買ったときの合計は300から215の間です。100個買った場合は10000から10500の間です。 なので下限がXを超えるまでその範囲を確認して、どこかで下限から上限の間に収まる金額になるなら存在する、収まる金額にならなければ存在しない、です。

これに気づけば簡単なのですが、Bに引き続き無駄に変なロジックを組んでしまい1WA出してしまいました・・・。

(追記)ロジック(最初、上記の全探索ではなくO(1)の計算で解いていた)は間違っていなかったようで、105円が上限のところ、106円だと思いこんでいたのがWAの原因でした。on_ 105に直すだけで、最初のロジックでも通りましたわ・・・。

D - Lucky PIN

一次元の配列を3つ作ってDPしました。

1つめの配列が、一文字がそこまでに登場したかどうかのサイズ10の配列。 2つめが、2文字の組み合わせがそこまでに登場したかどうかのサイズ100の配列。 3つめが、3文字の組み合わせがそこまでに登場したかどうかのサイズ1000の配列。

それを一文字進むごとにチェックしていって、埋めていきます。

コード見てもらったほうが早いですね。 https://atcoder.jp/contests/sumitrust2019/submissions/8740136

E - Colorful Hats 2

実際に赤青緑の色をカウントしていって、与えられた数字とカウントが一致した分の可能性があるのでそれを順次答えに掛けていきます。 カウントするときは、色の優先順位を決めておいてどれかひとつだけに足すことにします。

ざっくりいうとそれだけで答えが求められます。

ただし、clarにしれっと書かれていたように、発言が正しくないテストケースがあるらしく、この場合は0を出力します。

終了3分前までこれに気づかず延々とバグらせてました・・・。残念なことに、なぜか私は、結果的には必要がなかった0の時の場合分けをして別に処理していたのですが、それをしていなければこのバグを踏まなかったようです。うーん・・・。

F - Interval Running

見てません

まとめ

今回はとにかくいろいろと噛み合わなかったです。まあでもこれだけひどい内容でも5完はできたしレートも微減で済んでいるので、まだ伸びしろはありそうかなー。

f:id:mdstoy:20191201234543p:plain