日本レジストリサービス(JPRS)プログラミングコンテスト2023(AtCoder Beginner Contest 324)参加記

2023/10/14に開催された、日本レジストリサービス(JPRSプログラミングコンテスト2023(AtCoder Beginner Contest 324)に参加しました。

atcoder.jp

先週は、ABC、ARCと、立て続けに惨敗してしまい、あっという間の緑落ちを喰らってしまいました。

再度の入水に向けて地道にレートを稼いでいこうということで、今回も水パフォ目標で頑張っていきます。

今回の結果

なんとか5完を達成しました。

ABC324結果
ABC324結果

パフォーマンスは、水色中間というところ。再度の入水に近づくことが出来ました。

振り返り

相変わらず、小さいミスが続いてしまったことが反省材料です。

ABC324提出結果
ABC324提出結果

A問題

A - Same

数列Aの値が全て同じかを判定する問題。ループで判定すれば良いので、やるだけの実装をしました。1分17秒で1完。

提出コード

https://atcoder.jp/contests/abc324/submissions/46521548

B問題

B - 3-smooth Numbers

N23で割れるだけ割った後、1になっているかを判定すれば良い。

これもやるだけの実装でACが取れました。2分56秒で2完です。

提出コード

https://atcoder.jp/contests/abc324/submissions/46526045

C問題

C - Error Correction

文字列S_iが、文字列Tと最大1文字違いであるのかを判定する問題。

愚直に判定していくしかなさそうで、なかなかシンプルに実装するのが難しそうな感じ。

仕方なく、|S_i| = |T|の場合、|S_i| = |T| + 1の場合、|S_i| + 1 = |T|の場合それぞれでループを回し、最大1文字違いなのかを判定する実装をしました。

初回の提出では、答えが0件の場合を考慮できておらず、REを喰らいましたが、修正してなんとかAC。23分10秒1ペナで3完です。

提出コード

https://atcoder.jp/contests/abc324/submissions/46544237

D問題

D - Square Permutation

平方数を全探索して、問題の条件に合うように各ケタの数字の数が合っているかを判定していけば解けるだろうという感じの問題。

で、実装して提出してみたら、惜しいところで1WA。。

直感で、0のケースが抜けてるのかと思い、ググってみると、0も平方数に入るとのこと。こういうケアレスミスもなんとかしないといけないなあと。

とりあえず、修正してなんとかAC。37分15秒2ペナで4完でした。

提出コード

https://atcoder.jp/contests/abc324/submissions/46553939

E問題

E - Joint Two Strings

最初、難しめの文字列アルゴリズムを使うやつかとおもってましたが、よくよく考えると、単純に解ける問題だとわかりました。

文字列S_iTを先頭または末尾から見て、最大何文字を部分文字列として含んでいるかが分かれば、あとは単純な計算で解ける筈。

具体的には、

  • 数列AA_k:=配列Sのうち、TS_iをそれぞれ先頭から見て、最大k文字を部分文字列として含んでいる文字列の個数とする。

  • 数列BB_k:=配列Sのうち、TS_iをそれぞれ末尾から見て、最大k文字を部分文字列として含んでいる文字列の個数とする。

  • 連結の先頭にする文字列が、Tの先頭からk文字を部分文字列に含んでいるとすると、連結の末尾にはTの末尾から|T| - k文字以上を部分文字列に含んでいれば良い。

  • 数列Aでループし、上記の考え方で、答えに足し込んでいく。累積和を使えば、計算量はO(N)に収まる。

という感じの実装でACが取れましたとさ。

70分44秒2ペナで5完。とりあえず、今回は下げは無さそうです。

提出コード

https://atcoder.jp/contests/abc324/submissions/46571551

F問題

F - Beautiful Path

なんか途中の平均値の大小でダイクストラ法を使って解けないかという感じだったので、実装してみたところ、サンプルまではなんとか通せました。

しかし、提出してみると、TLEとWAを連発してしまい、結局解けずじまい。ここで時間切れになりました。

G問題

G - Generate Arrays

問題すら見ておりません。

これまでの実績

先週の大負け分を、少し取り戻しました。このまま再度の入水を狙います。

コンテスト実績
コンテスト実績

総括

F問題が解けなかったのは、仕方なしにせよ、凡ミスでの2ペナが痛かったかなあという印象です。

そのうち1個はサンプルを通していれば防げたミスだけに残念な感じがします。C問題までは早めの提出をするためにサンプルのテストは省略していたのですが、ちょっとその戦略は考え直した方がいいかなあという感じです。

ということで、また次回も頑張ります。