HHKBプログラミングコンテスト2023(AtCoder Beginner Contest 327)参加記

2023/11/4に開催された、HHKBプログラミングコンテスト2023(AtCoder Beginner Contest 327)に参加しました。

atcoder.jp

参加前のレートは1242。直近のHighest手前まで戻してきたというところで、これから水色安全圏までレートを上げていきたいところです。

ということで、今回も水色パフォ目標で挑んでいきます。

今回の結果

D問題でどハマりを喰らってしまい、3完で終了という残念な結果となりました。

ABC327順位表
ABC327順位表

パフォーマンスの方は緑にすら届かず。。レートは暴落して、再度緑落ちを喰らってしまいましたとさ。

振り返り

A問題からペナを喰らってしまうなど、全体的に残念な内容でした。

ABC327提出結果
ABC327提出結果

A問題

A - ab

問題を見た瞬間、文字列Sabが含まれるかどうかを判定すれば良いかということでs.contains("ab")trueならYesという感じの実装で提出。

その後、結果を見ずにB問題に進みましたが、Bを提出した瞬間、WAになっていたということに気づきました。。

結局"ba"もチェックする必要があるということで、後で振り返ると、サンプルを確認していれば防げたミスでした。

AをACした時点では、6分54秒1ペナで2完。

提出コード

https://atcoder.jp/contests/abc327/submissions/47218764

B問題

B - A^A

見た目少し難しそうだが、制約から、Aの取りうる範囲はそんなに大きく無いので、全探索が効くかという感じ。

とりあえず、Aの探索範囲を1から100までとし、A^{A}Longの最大を超える場合は探索打ち切りという感じで実装。これで問題なくACが取れました。

ちなみに、この時点でAの提出がWAだったことに気づいたので、6分24秒1ペナで1完です。

提出コード

https://atcoder.jp/contests/abc327/submissions/47217956

C問題

C - Number Place

与えられた9 \times 9の盤面が、ナンプレの配置として正しいかを判定する問題。

やることとしては、各行、各列、そして各3 \times 3のブロックに対して、愚直に19が1つずつ存在するかを判定するだけ。

実装に結構時間がかかりましたが、問題なくACが取れました。18分1秒1ペナで3完。

提出コード

https://atcoder.jp/contests/abc327/submissions/47012495

D問題

D - Good Tuple Problem

考察したところ、グラフに落として考えれば良くて、各連結成分毎にDFSを使って各頂点に01を設定していき、隣接する頂点が同じ値になったらNoという感じで良さそう。

ということで、上記の要領で実装して提出したものの、なぜかWAが取れず。。

不具合になりそうな所に当たりをつけていじってみても、同じWAの繰り返し。。とりあえず残り30分を切ったところで、一旦この問題を諦めることにしました。

因みに、コンテスト後に解説を見ても、本番中に行った考察とほぼ同じ感じだったので、なぜ通らないのかが未だにわからずです。

なお、この問題は単なる二部グラフ判定の典型だった模様。この程度の典型が解けなかったのは、非常に残念です。

E問題

E - Maximize Rating

考察してみると、コンテストを選ぶ回数を固定したときに、レーティングの計算式の分子の部分である、\sum_{i=1}^{k}(0.9)^{k-i}Q_iの最大をDPで求めることができれば解けそうな感じである。

あとは、dp\lbrack i \rbrack \lbrack j \rbrack :=i個目まで見た時に、j個採用した時の前述の合計の最大値という感じでDPが組めれば、というところでしたが、どうにも実装がうまくいかずでサンプルすら通らない形に。

時間いっぱい頑張りましたが、結局ACを取り切ることはできませんでした。

F問題

F - Apples

Eに詰まりかけたところで、ワンちゃんあるかと問題をチラ見しましたが、結局わからずで撤退しました。

G問題

G - Many Good Tuple Problems

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

これまでの実績

再度の緑落ちを喰らいました。また、入水に向けて頑張ります。

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

総括

A問題のミスや、D問題のバグらせなどもあり反省点が多い回でしたが、E問題までは、考察はなんとかできている感じなので、そんなに悲観する内容では無いかというところです。

次回以降に向けては、もう少し実装力をつけていく必要があるかというところ。過去問を解く数などをいつも以上に上げていくように心がけて、準備していこうと思います。

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