AtCoder Beginner Contest 179 参加記

2020/9/19に開催されたAtCoder Beginner Contest 179に参加しました。

atcoder.jp

前回は2完を喰らってしまったので、今回はそのリベンジとばかりに気合を入れて臨みました。

今回の結果

で、肝心の結果ですが、今回も2完終了となりました。ヽ(`Д´)ノウワーン

ABC179結果

ABC179結果

灰色パフォーマンスでレーティングは大幅下げ。灰色落ちの危機を向かえそうです。

振り返り

ABC179提出結果

ABC179提出結果

A問題

A - Plural Form

 文字列の末尾で処理を分岐する問題。Javaだとs.endsWith("s")で分岐すればよい。

問題なくAC。

B問題

B - Go to Jail

ループ処理だが、言われたとおり実装するだけ。問題なくAC。 

C問題

C - A x B + C

 この問題でやらかしてしまった。。

A \times B + C = Nを満たす正整数の組(A,B,C)の数を求める問題。

A \times B \lt NとなるA,Bを決めれば、Cは一意に求まる。なので、1からN - 1までのXについて、それぞれ何通りのA \times Bで表すことができるかの組み合わせの数を足し合わせればいいやと考えました。

しかし、ここからが結構厄介で、X素数の場合とか、平方数の場合とか、素因数分解したときに同じ素数が複数入ってる場合など色々考えしまい、混乱してしまいました。

で、結局いろいろライブラリなどを使ってこねくり回したものの、結局サンプルすら通らないので退散。。

この問題、後日よくよく考えたら、A1からN - 1のそれぞれについて、

A \times B \lt NとなるBの数、すなわちfloor((N - 1)/A)の値を足し合わせれば答えになることに気付きました。

これだと、この問題が灰色diffなのも納得がいきますね。

D問題

D - Leaping Tak

 早々にC問題を諦めて、Dに取り組むことに。

この問題、色々考察するも、結局愚直に各区間のDPを行うやり方しか思いつかない。

なので、とりあえずサンプルが通る実装を行い、多分ダメかなーとおもいつつも提出したら、やはりダメ。結局TLEを喰らってしまいました。

解説をみると、DP高速化が必要とのことで、まだ色々勉強が足らないと思いました。

これを機会に覚えることにします。

E問題

E - Sequence Sum

 C,Dが散々な出来なので、コンテスト中はチラッとしかみれませんでした。

コンテスト後のTLで周期性なるキーワードが出て解法がわかったので、後日ACしておきました。

F問題

F - Simplified Reversi

 これもコンテスト中はチラッとしかみてませんでした。

ま、後日解説ACでもすることにします。

これまでの実績

うかうかしてると、冗談抜きで灰色落ちしそうです。。

コンテスト実績

コンテスト実績

総括

実力不足を思い知らされる結果が続きますが、これを乗り越えるには日々精進をつづけていくしかないですね。 

次回も懲りずに頑張ります。