AtCoder Beginner Contest 258 参加記

2022/7/2に開催されたAtCoder Beginner Contest 258に参加しました。

atcoder.jp

先週土日のABC、ARCは、思ったより結果が出ず、レートは大きく低下。今回はなんとかこの悪い流れを止めようという気持ちで臨むこととしました。

今回の結果

で、今回はなんとか4完を達成しました。

ABC258結果
ABC258結果

パフォーマンスは、意外と出てくれて水色に到達。なんとか連敗を止めることができました。

振り返り

Eは解法までなんとかたどり着きましたが、解き切ることができませんでした。

ABC258提出結果
ABC258提出結果

A問題

A - When?

21:00からK分後の時間をHH:MM形式で出力するだけの問題。

制約から日付を跨ぐことは気にしなくて良い。時間に\lfloor \frac{K}{60} \rfloor を足し、分にK60で割った余りを足して、HH:MM形式に出力することでACが取れましたとさ。

2分26秒で1完。

提出コード

https://atcoder.jp/contests/abc258/submissions/32887538

B問題

B - Number Box

N×Nサイズのグリッドから、スタート地点および8方向の全てのパターンを全探索する問題。

大分実装がめんどくさい問題でしたが、頑張って実装。なんとか一度の提出でACを取り切ることができました。

16分13秒で2完。なんかPaizaのBランクぐらいで出てきそうな問題だったという感想。

提出コード

https://atcoder.jp/contests/abc258/submissions/32898027

C問題

C - Rotation

クエリ毎に愚直に文字列を動かすとTLEになりそうな問題。

よって、クエリ1によってもともとの文字列の先頭位置がどれだけ右にずれたかを計算しておき、クエリ2では、ずれた位置を補正して位置を計算しなおすこととする。

で、ちょっと実装でバグらせたりして時間をかけてしまいましたが、なんとか一発でACを取ることができました。

21分28秒で3完。

提出コード

https://atcoder.jp/contests/abc258/submissions/32904334

D問題

D - Trophy

i (1 \le i \le N)番目のステージまでクリアし、あとは全てステージiを規定回数X回までクリアした時の合計時間を全てのiについて求めて、最小時間を求めるだけに見える。

ということで、ちょっと簡単すぎて罠かとおもったが、サンプルが通ったところで一度提出。。。するもWA。。。

すこしWAの原因がわからなかったが、N \le Xのパターンがダメだったみたいということで、微修正すると、なんとかACを取ることができましたとさ。

39分58秒1ペナで4完

提出コード

https://atcoder.jp/contests/abc258/submissions/32909527

E問題

E - Packing Potatoes

残り1時間残してEまで来たので、なんとかここは解き切りたいところ。

とりあえず問題文を読んでみると、過去に学んだダブリングを応用することでなんとか行けそうな感じ。

ということで、i (0 \le i \le N - 1)番目のポテトから詰め始めた時に、最終的に何個箱に入るかを管理する配列と、次に何番目のポテトから詰め始めることになるかを管理する配列を用意し、後者を使い、ダブリング用の配列を前計算する。

そして、実装があらかた完成したところでサンプルを試してみるが、これが全然通らず。。。

どこがバグっているのかまったくわからずのまま、試行錯誤するも結果は芳しくなく、残念ながら時間切れを迎えることになりましたとさ。

後程、公式解説を確認しましたが、解法までは概ね合っていたようなので、これを解き切ることができなかったのは悔しいです。

F問題

F - Main Street

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

G問題

G - Triangle

なんか順位表上では、先行して解かれている模様だったので、なんかの典型か?とおもい、問題文を確認するなどしましたが、何もわからずで撤退しました。

Ex問題

Ex - Odd Steps

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

これまでの実績

先週下げた分を少しは取り戻すことができましたとさ。

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

総括

繰り返しですが、今回のE問題は解法まで見えており、時間もあった中で解き切れなかったのは大分残念でした。

解き切れなかった原因ですが、過去問で覚えた知識を本番で有効に生かすための準備が足りていないというのがあるかと思います。今後はこのあたりを踏まえて、過去問を解くときもちゃんと本番で引き出せるように内容を纏めるなど、精進の方法も改善していこうと思います。

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