見出し画像

ABC192の感想

SOMPO HD プログラミングコンテスト2021(AtCoder Beginner Contest 192)に参加しましたので、その感想を書いていきます。問題はこちらから。

結果はこんな感じでした。

画像1

画像2

画像3

4完(3wa)
順位:1717 / 8699
パフォーマンス: 1274

今回は集中力がかけていましたね。まさかa問題でwaを出してしまうとは、、、自分でもびっくりしました。こういう、知識とか技能以前のところで失敗するとしょんぼりしますし、なにより、あのとき注意してれば順位がーという「たられば」が無限にでてきます。

とはいうものの、結果としてはまずまずといったところだと思います。無事レートもあがりました。最近の結果を見ると明らかなのですが、特に新しい知識を得た!難しい問題を攻略した!ではなく、まあ、ちょいと難しいけど相応だよね、という問題を確実に得点する力が伸びてきています。正直な話、そのような精進(難しい問題より、相応な問題を広く解く)をしているので、しっかりとその成果がでているのは嬉しい限りです。焦らず、のんびり、そのうち難しいほうまで手が伸びるといいなあ、と過ごしています。楽しくやる!それが一番ですからね。

では感想いきます

A問題

100の倍数になると、なんかがもらえます。あといくつでしょう。

という問題です。100までに足りない分を計算するだけですが、なぜか間違えました。なぜなのでしょう。

B問題

大文字と小文字からなる文字列を判定します。

はじめ問題文が頭に入ってこなくて焦りました。どっちが大文字?どっちが小文字?

その後も、じゃあ判定のためにはどうするんだ?奇数が小文字ならOK?じゃあダメなのはその逆。ん、逆ってなんだ?

という感じですね。でも落ち着いて答えることができました。

C問題

数式が与えられているので、上手いこと変形します。

これに関しては、まずちょっと悩みました。大変そうだな。でも、この問題がC問題であることと制約が10^5であることを見て、愚直でも通りそうだな、と脳裏にちらつきました。

そこからはとっても早かったです。g1,g2の関数をパパっと、作って、for文で繰り返し回してしまえばおしまいです。

最近、C問題がちょいと大変だったイメージでしたが、比較的シンプルな問題に救われました。

D問題

順位表を見てひとまずDを飛ばしてEから解いてました。

Eを終えてDに戻ると残り30分弱。ちょっとドキドキしました。ドラマを生むには良い感じの残り時間です。

進数と出ていたので少し身構えましたが、結局は10進数に変換するだけなので、その点はあまり問題なく進めました。ただ、制約を見るに、10^18。これは愚直では間に合いませんね。少し考えました。

ここで、入力例1を見ると、進数が3のときは8で4のときは10であることを発見。もしかしたら、5の時はもっと大きくなるんじゃないかと思って計算してみると、22(5)=12ですかね。考えてみれば進数が増えれば数が増えるは当たり前ですが、これに気づいたときは嬉しかったです。

nに対してその変換後の値は単調増加する

のであとは二分探索でおしまいです。

と言いたかったのですが、制約をもうちょっと見ると x は60文字までの文字列だそうです。これはlong long でも収まりませんね。 - '0'を駆使して、なんとか頑張りましたが、60文字ということは60桁の数字ですので、当然10進数変換の際にオーバーフローします。このオーバーフローが取り切れませんでした。

今となっては、pythonでやればよかった、と思ってます。あとちょっとだった(おそらく)だけに悔しいですね。でもまた一つ強くなりました。

画像4

E問題

電車を乗り継いで目的の街まで行く問題です。

前回のE問題もダイクストラ法の経路問題でしたので、いや、まさかね、と思いましたが、そのまさかでした。ダイクストラ法で解けました。

通常のダイクストラ法と少し違うのが、本問題は街から街へ電車で移動するのですが、電車はダイヤ通り走ってますので、通常の移動時間(コスト)に加えて、待ち時間が生じてしまします。これは困りましたね。

とはいうものの、コストの計算に「通常のダイクストラの移動時間」と「現在時刻から次の電車が来るまでの待ち時間」の和を用いて同じことをしてあげれば答えが出ます。見かけよりだいぶシンプルでした。

わかってしまえば、実装するだけなのですが、本問題も制約が大きかったです。int 型でコストを計算していることを失念していて、2waでした。以前の円内部の格子点を求める問題で何を学んだのでしょうか。良くない!

本問題を解いたことで、暫定順位が4000位から1200位ぐらいまで一気に上がりました。上がったときはとても嬉しかったのですが、2waを出しているときの心境はいま思い出しても嫌な汗が出る感じです。競プロって体に良くないのかもしれません。

F問題

材料からなんかすごいポーションを作る問題です。なんかすごそうで終わりました。

あとがき

いつも通りです。実力通りの結果だと思います。心のどこかでは、なんか上振れてほしいな、っていう下心が芽吹いていますが、こんなもんでしょう。日々精進を続けていきます。最近はちょこちょこさぼってますが、、、

余談ですが、本コンテストの解説記事は頑張って明日までに書き上げたいと思ってます。いまから、24時間以内ぐらいです。そのため、わたしのABC192の本当の闘いは今から始まるというわけですね。頑張ります。



この記事が気に入ったらサポートをしてみませんか?