パナソニックプログラミングコンテスト(AtCoder Beginner Contest195)に参加しました。
結果
A,B,C問題がの3問正解でパフォーマンスが699でした。B問題もC問題も解くのが遅かったのでパフォーマンスは結構低め… C問題は解き方自体は合ってたのに解答を管理する用変数の型選択をミスったのでWAを量産しちゃった。long longがオーバーフローするのは想定外だった。
A問題
剰余計算してHがMで割り切れるかどうかを判断するだけ。 何回か前のABCでも似たように剰余計算してIFで分岐するっていう問題があった気がする。
B問題
B問題にしては難しい気がするけど、解けてる人数見ると普段どおりだからそんなに難しくなかったのかなあ。結局ちゃんとACしてるから良かったけど。
いろいろ試してだめだったので、最終的にはWをAとBでそれぞれ割って個数の範囲に当たりをつけてから、を当たりをつけた範囲の下からと上から探索して最初に式を満たす個数を求めました。 答えがとすると、みかん1つあたりの平均の重さはになるのでこれがの範囲に入っていれば良い。各項を倍するとになるので数式を満たすの最大と最小を求めればそれが答えになるはず。どのグラム数のみかんが何個って詳細は求められてないのでこれでなんとか解ける。
Wキログラムピッタリにするって方法を考えるのが難しかった。グラムのものが個ある時とかならもう少し楽だったと思う。Aグラム以上Bグラム以下の全通りが無限個選択できるって考えると前通りするのが大変だなあって思って。難しく考えすぎてるだけな気もするけど。
C問題
制約をみるとなので全探索すると余裕でTLEになるはわかる。と言うことは全探索以外方法を使って探索数を減らさないといけないことになる。 順番に整数の時コンマをいくつ書くのかだと間に合わないので、3桁後、6桁後、・・・、15桁後のコンマそれぞれが何回書かれることになるのかを考えて数えて数え上げました。 例えば3桁後のコンマは1,000~Nまで毎回書かれるので回書かれることになるし、6桁後のコンマは1,000,000~Nまで毎回書かれるので回書かれることになる。 こんな具合にまで順番に計算していけば答えが求められる。これがで求まるってのは意外。順番に数えるとになることを考えるとだからだいぶ早くなる。
答えはlong longでもオーバーフローするみたいでそれに気付かず何回かWAになった。型をdoubleにするだけでACしたのでもったいなかった。 long longがオーバーフローするのはちょっと想定してなかった。
D問題
制約自体は全体的に小さめなので全探索しても間に合いそうなのと、前のクエリの結果は影響しないので毎回独立して問題を解いて良いのはわかった。 B,C問題で時間使いすぎててじっくり考える余裕がなかったので10分くらいで直感のままに一気に一通り実装したけどバグ取りが間に合わなかった。