トヨタシステムズプログラミングコンテスト2023(AtCoder Beginner Contest 330)参加記

2023/11/25に開催された、トヨタシステムズプログラミングコンテスト2023(AtCoder Beginner Contest 330)に参加しました。

atcoder.jp

ここのところ、土曜に予定が固まってしまい、2週連続で土曜のABCには参加できてなかったのですが、今週はなんとか9時ギリで帰宅できたので参加することにしました。

なんとか、早いとこ再入水を達成すべく、今回も水パフォ目標で挑みます。

今回の結果

なんとか5完確保したものの、時間かかり過ぎ+ペナ喰らい過ぎの影響で、順位は伸びませんでした。

ABC330順位表
ABC330順位表

結局、今回は緑パフォで、レートを上げることすらできずという結果で終了です。

振り返り

BとCで大分手間取ってしまい、ペナを喰らいまくるなど、非常に残念な内容でした。

ABC330提出結果
ABC330提出結果

A問題

A - Counting Passes

これは、見たまんまというか、配列Aをfor文で回して、L以上が何個あるかをカウントするだけ。

やるだけの実装でAC。0分54秒で1完です。

提出コード

https://atcoder.jp/contests/abc330/submissions/47889963

B問題

B - Minimize Abs 1

問題文を一読しても、要領がよくわからん問題でした。

とりあえず、紙に書いて整理してみたり、サンプルから推測するなりした結果、多分|L - A_i| \lt |R - A_i| ならLが答えで、それ以外ならRが答えかな?という感じで出してみたらWA。。

次に、サンプルにL \lt A_i \lt Rのケースが無い事に気づき、結局L \lt A_i \lt RならA_iが答えで、あとはA_i \le LならLR \le A_iならRが答えかという感じで出したら、ACが取れましたとさ。

いつものB問題と雰囲気が違いので、やたら苦労しました。21分55秒1ペナで2完。

提出コード

https://atcoder.jp/contests/abc330/submissions/47910320

C問題

C - Minimize Abs 2

ここ最近のC問題に比べると難易度が高目というか、D問題で出てきてもおかしくないレベル感の問題という印象。

とりあえず、x\sqrt{D}ぐらいまで試して、yを二分探索で求める感じでいいだろうという感じで提出しましたが、何故か大量のWAが出てしまう。。。

色々いじってみても、WAが取りきれず。残り1時間を切ったぐらいで、とりあえず、この問題をスキップする事にしました。


E問題を終えたところで、解けそうな問題がCぐらいしか無く。。とりあえず、1から見直してみることに。

すると、当初何を勘違いしてたか、Dの上限が実際は2 \times 10^{12}だったところ、1 \times 10^{12}と誤解してた事で、2乗を前計算してたり、forの上限を決めてたところで色々おかしくなってた事に気づきました。。

また、挙げ句の果てに、非負整数は0を含まないと勘違いしてたこともWAの原因に。。

結局、上記の勘違いを修正して実装したところ、なんとかACが取れましたとさ。

結局、C問題では5ペナも喰らってしまい、この時点では、87分37秒7ペナで5完となりました。

提出コード

https://atcoder.jp/contests/abc330/submissions/47937560

D問題

D - Counting Ls

2つのoが縦に並ぶラインと、横に並ぶラインの交点にあるoを基準に考えると、すんなりと解けるかという印象。

各列、各行に存在するoの数を前計算しておき、あとは、oである(i,j)について、(行ioの個数-1\times(列joの個数-1)の値を合計していけば解けるかと。

という事で、実装してみたら問題なくACが取れましたとさ。46分8秒1ペナで3完。

提出コード

https://atcoder.jp/contests/abc330/submissions/47922901

E問題

E - Mex and Update

Dを解いたあと、Cを少しいじったがWAが取れんので、E問題に進んでみる。

考察すると、求めるべきMexの上限はNになるので、それ以上の数字については管理をしなくて良さそう。

という事で、TreeSetを使って、0以上N以下の数字のうち、Aに存在しない整数を適切に管理できれば、TreeSetの最小値がMexになるはず。

で、一旦実装してみたら、管理する上限を間違えたか、1回WAを喰らったものの、修正してACが取れましたとさ。

この時点で、65分59秒2ペナで4完です。

提出コード

https://atcoder.jp/contests/abc330/submissions/47930405

F問題

F - Minimize Bounding Square

ワンチャン、これがACできれば大逆転で再入水まで持ってけるかというところだったが、解けず。。

問題の見た目上、正方形の一辺の長さで二分探索という感じでしたが、実装まで持ってくことはできませんでした。

G問題

G - Inversion Squared

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

これまでの実績

さらに入水が遠のく結果になりました。。

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

総括

今回は、BとCで大分調子を狂わされてしまいました。特にCは自分の不注意でペナを重ねているだけに反省しきりという感じです。

とりあえず、今年もあと一ヶ月と少しとなりましたが、現状1年前のHighestよりレートが下回っている状況。1年経って、進歩も無しというのは少し寂しい感じがするので、なんとか年内に再入水を果たしたいところです。次回のABCは、水パフォ以上取れるように、準備していこうと思います。

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