デンソークリエイトプログラミングコンテスト2023(AtCoder Beginner Contest 309)参加記

2023/7/8に開催された、デンソークリエイトプログラミングコンテスト2023(AtCoder Beginner Contest 309)に参加しました。

atcoder.jp

ここ最近は、緑パフォを確保するのがやっとという体たらくで、中々レートが上がっていきません。ここらで水パフォを取って、レートを上げていこうという気持ちで臨みます。

今回の結果

今回は4完で終了となりました。。

ABC309結果
ABC309結果

ギリギリ緑パフォという結果で、レートの方は大きく下落。とうとう、1100も切ってしまいました。。

振り返り

今回は、全般的にやらかしが多かった回でした。

ABC309提出結果
ABC309提出結果

A問題

A - Nine

ABのマスが上下左右に隣接しているかを解く問題と誤読したので、1WAを喰らう。。

上下の隣接判定を削除することで、ACが取れましたとさ。5分51秒1ペナで1完です。

終了後のTLでも、同じ被害を受けた方が多数いらっしゃったということで、皆さん考えることは一緒なんだなあという印象です。

提出コード

https://atcoder.jp/contests/abc309/submissions/43343805

B問題

B - Rotate

なんかやたらと実装が重そうな問題という印象。

どういう実装方針で行くかで大分悩みましたが、とりあえず、上の辺について一つ左のマスから移動、右の辺について一つ上のマスから移動、下の辺について一つ右のマスから移動、左の辺について一つ下のマスから移動、という要領でなんとか実装にこぎつけることができました。

提出して問題なくAC。17分17秒1ペナで2完です。

提出コード

https://atcoder.jp/contests/abc309/submissions/43353184

C問題

C - Medicine

当初、二分探索で解く問題かと思い、まず日数の昇順ソートして、飲む薬の数の後ろからの累積和を取る的なことをやってみましたが、どうも実装が上手くいかず。。

あれこれ実装をこねくり回した挙句、実は二分探索しなくても普通に累積和を取れば単純に解ける問題と気づきました。。

結局、後ろからの累積和を前から見て、K錠以上飲んでいた日数にプラス1した値を答えとする実装でACが取れました。

53分53秒1ペナで3完。実装方針の選択ミスが響き、大きく立ち遅れる展開になりました。

提出コード

https://atcoder.jp/contests/abc309/submissions/43372482

D問題

D - Add One Edge

頂点数N1のグラフについて、頂点1から最も遠い頂点との距離、頂点数N2のグラフについて、頂点Nから最も遠い頂点との距離をそれぞれ求め、その合計に1足した数が答えになる。

ダイクストラ2回書いたので、大分実装が長くなってしまったが、なんとかAC。

69分24秒1ペナで4完です。

提出コード

https://atcoder.jp/contests/abc309/submissions/43378481

E問題

E - Family and Insurance

見た目がDFS的な感じだったので、とりあえずDFSで保険対象になる人にフラグを立てる的な実装をしてみる。

しかし、普通にDFSするとTLEしそうなので、yの降順で処理しつつ、すでに人iの何代先まで見ているかという情報を管理して、先を見る必要がなさそうであれば処理を省略する的な実装を入れました。

が、、なんでか知らんがTLEが取れず。。結局、時間切れまで格闘しましたが、ACを取ることはできませんでした。

F問題

F - Box in Box

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

G問題

G - Ban Permutation

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

Ex問題

Ex - Simple Path Counting Problem

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

これまでの実績

ついに、年初来の最低レートを更新しました。このままズルズル行かないようにしないと。。

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

総括

今回も、優しめの問題で大きなやらかしをしてしまいました。原因として、精進時間の不足もありますが、問題に対して余計な先入観を持ってしまっているのがよく無いかもしれません。

まだまだ、実力的に足りない部分が多いと自覚し、初心に立ち戻って取り組んでいこうと思います。

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