AtCoder Beginner Contest 250 参加記

2022/5/8に開催されたAtCoder Beginner Contest 250に参加しました。

atcoder.jp

先週はABCの開催がなかったので、2週間ぶりのRatedコンテスト参加。

ゴールデンウイーク中は、過去問の見直しなども結構こなしており、練習は積み重ねたつもりなので、その成果を出すべく水パフォ目標で臨むこととしました。

今回の結果

終わってみれば、4完終了。目標達成は微妙なところとなりました。。。

ABC250結果
ABC250結果

結局、パフォーマンスはわずかに水色に届かずというところ。一応レートは上がったので、その点はヨシとしましょう。

振り返り

E問題を解き切ることが出来ませんでした。

ABC250提出結果
ABC250提出結果

A問題

A - Adjacent Squares

A問題にしては少しややこしそう見た目という印象。

上手いやり方があるかと考えましたが、すぐには思いつかず。とりあえず愚直にマス(R, C)から上下左右を見たときに、盤面の範囲外にならない場合のみ答えにプラス1する実装としました。

途中、実装をバグらせてしまい、タイムロスをしましたがなんとかAC。

8分10秒で1完。少し時間が掛かりすぎです。

提出コード

https://atcoder.jp/contests/abc250/submissions/31518723

B問題

B - Enlarged Checker Board

これもだいぶ面倒な問題かという印象。

マス目(i,j)を見たときに、iAjBで割れば、現在のマス目に対応するタイル(a, b)が分かる。

あとは、abの偶奇で場合分けし、黒か白かを判断すればよい。

ということで、上記の要領で実装して、ACを取る事が出来ました。

16分5秒で2完。まだ、時間が掛かりすぎているという状況です。

提出コード

https://atcoder.jp/contests/abc250/submissions/31523141

C問題

C - Adjacent Swaps

一瞬、x_iが右端だったら、先頭の数字と入れ替えるのかと誤読しそうになったが、なんとか踏みとどまった。。

なんかこの手の問題はどこかでやったことがあるかもという既視感を覚えたが、解法はすんなりと出来上がりました。

索引を指定して、何の値が入っているかを管理する配列と、値を指定して、何番目に入っているかを管理する配列をそれぞれ用意し、あとはクエリを順番に処理してにシミュレーションをしていけばよい。

あとは実装と提出を行い問題なくACが取れました。

30分5秒で3完。前回ABCではC問題を落としましたが、今回はすんなり通せたので多少安心しました。

提出コード

https://atcoder.jp/contests/abc250/submissions/31528912

D問題

D - 250-like Number

一読して、制約よりp \lt q \lt 10^{6}になることが明らかなので、あとはその範囲で素数を全部探索すれば良いかという印象。

ということで、まず p \lt 10^{6}となる素数全てについて、ぞれぞれに対応するqが何個あるかを数え上げていく方法を取る。

pに対応するqが取りうる範囲は、p \lt q 且つ q^{3} \le \lfloor \frac{N}{p} \rfloorとなるので、あとはその範囲で素数表を素数の数を数え上げをしていけばよい。

当初、素数表をどの範囲まで作れば良いかが不明で、とりあえず最大値をローカルで試したところ、80万ぐらいまで作っとけばいける模様。TLEしないか少し心配でしたが、提出してみたら無事ACが取れましたとさ。

55分16秒で4完。個人的にな印象では、5完目いけるかどうかは微妙な情勢です。

提出コード

https://atcoder.jp/contests/abc250/submissions/31536381

E問題

E - Prefix Equality

途中まで考察したものの、実装が間に合わず。

dp \lbrack i \rbrack \lbrack 2 \rbrack := Aの先頭i個目までの集合が、Bの先頭dp\lbrack i \rbrack  \lbrack 0 \rbrack個目からdp\lbrack i \rbrack  \lbrack 1 \rbrack個目までの集合と同一。(存在しない場合は、-1)

上記の配列を構成する処理を行い、それぞれのクエリにO(1)で答えればいけるという感じだったが、実装がややこしくなってしまい、結果まともに動かすことすらできずに時間切れとなりましたとさ。。

F問題

F - One Fourth

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

G問題

G - Stonks

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

Ex問題

Ex - Trespassing Takahashi

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

これまでの実績

一応、直近のHighest付近に迫ることが出来ました。次回はこれを更新したいところ。

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

総括

今回のE問題は解けずで残念でしたが、それ以前の問題も実装に手こずったりでタイムロスをしてしまったところもあり、反省点が多い回でした。

もう少し、早解きができれば、後の問題に費やせる時間もできてくるというところですので、今後は簡単そうな問題も早く解けるように心がけながら精進を続けていきたいと思います。

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