トヨタ自動車プログラミングコンテスト2023#3(AtCoder Beginner Contest 306)参加記

2023/6/17に開催された、トヨタ自動車プログラミングコンテスト2023#3(AtCoder Beginner Contest 306)に参加しました。

atcoder.jp

先週のABCで青パフォをゲットし、レートの方はもう少しで水色突入というところ。今回で決める事ができるように頑張ろうという気持ちで臨みました。

今回の結果

今回は、ABCDの4完という平凡な内容で終了です。。

ABC306結果
ABC306結果

通常だと、緑パフォに足りないぐらいの感じで、レートが下がるところ。しかし今回は、ジャッジのトラブルがあったという事でUnratedになり、レートを減らさずに済みました。ぶっちゃけ、助かったというのが本音です。

振り返り

B問題で小ミスあり。E問題以降は、まともに解けずという、散々な内容でした。

ABC306提出結果
ABC306提出結果

A問題

A - Echo

入力されたSについて、先頭から順に2回ずつ答えの文字列に追加する感じで実装。

1分31秒で1完。

提出コード

https://atcoder.jp/contests/abc306/submissions/42317531

B問題

B - Base 2

入力を逆順に見た文字列を2進数とみなし、10進数に変換して出力する感じで実装。

これでOKと思い、提出。ジャッジはほっといて、次のC問題に取り組むことに。


C問題を終えたところで、Bがバグってることに気付いてしまいました。出力をlongで出していたので、先頭ビットが1の時に対応ができてなかった模様。B問題でこんな制約を出してくるとは、盲点でした。

仕方ないので、BigIntegerの使い方をググって何とか実装することに。

結局、11分59秒1ペナで3完。久々にB問題でワナに引っかかってしまいました。

提出コード

https://atcoder.jp/contests/abc306/submissions/42333803

C問題

C - Centers

とりあえず、各数字と2回目の出現位置のペアのリストを作っておく。あとは、出現位置でソートして、各数字を出力すればOK。

上記実装で、問題なくAC。が、、この時、Bがバグってたことに気付いてしまいました。なので、この瞬間では、8分23秒で2完。

提出コード

https://atcoder.jp/contests/abc306/submissions/42330028

D問題

D - Poisonous Full-Course

見た感じ、単純なDPで解けそうな感じ。

dp \lbrack i \rbrack \lbrack j \rbrack := j 番目の料理を食べるか食べないか選択した時、高橋くんの状態が i (0:お腹を壊していない, 1:お腹を壊している)である場合の美味しさの最大値。

上記のDP配列を構築し、あとは適切に遷移を書くだけ。問題なくACが取れましたとさ。

20分37秒1ペナで4完。ペナを除けば、順調なペースで来てます。

提出コード

https://atcoder.jp/contests/abc306/submissions/42340215

E問題

E - Best Performances

一見して、まったく解法が分からん感じ。。

セグ木を使うのか、またまたどうするのか、色々考えては実装のイメージまではつかずというのが続き、まったく手が進まないまま時間だけが過ぎていきました。

結局、残り40分切ったところで、この問題を諦め。。F問題に取り組むことにしました。

F問題

F - Merge Sets

Eを諦めて取り組んで見たものの、なかなかに手ごわい問題。。

入力を座標圧縮して順番が分かるようにすればいいかなと思いましたが、その後どうすべきかが分からずというところで時間切れになりました。

G問題

G - Return to 1

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

Ex問題

Ex - Balance Scale

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

これまでの実績

Unratedになったので、レート変化はありません。

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

総括

今回のE,Fは、結構AC数が多かったので、本当は本番で解きたかったところ。しかし、これで解けなかったのは実力不足というところでしょう。

今回はたまたまUnratedになりましたが、こんな調子では入水が出来ても水色レート維持はできないでしょう。今後に向けて復習に取り組みます。

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