2022/10/1に開催された、京セラプログラミングコンテスト2022(AtCoder Beginner Contest 271)に参加しました。
ここ最近のコンテストでは、地味な結果が続いており、レートの方も停滞モードが続いております。
今回のコンテストでは、ここいらで大きくパフォーマンスを上げようということで、水パフォを目標として臨むこととしました。
Rated参加します。
— devgenjin77 (@devgenjin77) 2022年10月1日
今回も水パフォ目標で頑張ります✊
京セラプログラミングコンテスト2022(AtCoder Beginner Contest 271) - AtCoder https://t.co/2PBGOZqdOE
今回の結果
3完で終了しました。。。
パフォーマンスは、4桁にすら到達せず。今回は完敗という結果になりましたとさ。
3完緑パフォで冷え😢
— devgenjin77 (@devgenjin77) 2022年10月1日
また明日頑張ります
devgenjin77さんの京セラプログラミングコンテスト2022(AtCoder Beginner Contest 271)での成績:2466位
パフォーマンス:961相当
レーティング:1128→1112 (-16) :(#AtCoder #京セラプログラミングコンテスト2022(ABC271) https://t.co/TfQnaKm19B
振り返り
C問題でハマってしまい、だいぶ時間をロスしました。
A問題
入力されたを、丁度2桁の16進数で表示せよという問題。
出力フォーマットを使えれば簡単そうだったが、すぐには使い方が思い出せなかったので、とりあえず16進数の文字列で変換後、1桁だったら0を足すという実装をしました。
2分48秒で1完。
提出コード
https://atcoder.jp/contests/abc271/submissions/35272193
B問題
B - Maintain Multiple Sequences
あまりにもシンプルな問題だという印象だったが、公式解説によると二次元配列を使う練習問題であるとのこと。
とりあえず、個のListオブジェクトを用意し、入力通りに値を追加。
クエリに対する答えでは、番目のListオブジェクトの番目を出力する実装をしました。
8分0秒で2完。
提出コード
https://atcoder.jp/contests/abc271/submissions/35277704
C問題
まず、入力されたをソートして、キューに突っ込む。
次に、キューを前から参照した時に、1巻から順番にあるかどうかを見て、ない場合は配列の後ろにある2巻を売るという実装をしてみる。
が、提出したら、あえなくWA。。。。
どういうケースで上手く行かないかを考えるも、全く思いつかず。。
残り時間も半分以下になり、このままでは2完爆死しかねないので、仕方なくこの問題は撤退することにしました。
D問題
以下のDPを使って解いていく。
番目のカードまでの裏表を決めた時に、合計がになる時の配置方法の文字列
がNullでない場合、以下の遷移を行う
(表向きの場合)
(裏向きの場合)
がNullの場合はNo、そうでない場合はYes。
以上の実装でなんとかACを取り切りました。
71分45秒で3完。とりあえず、緑パフォぐらいは確保できそう。
提出コード
https://atcoder.jp/contests/abc271/submissions/35307731
E問題
頂点からに到達する時の最小コストを管理する配列として定義。
あとは、配列を先頭から見て、番目のパスを使った時に、上記の最小コストを更新できるかを計算していく。
と、ここまでの解法はなんとか思いつきましたが、いかんせん残り時間が少なくて、実装が終わる頃には、コンテスト終了ギリギリの時間。。
ローカルでサンプルが通れば提出するところでしたが、実装をバグらせてしまい、惜しいところで提出できず。結局時間切れ終了となりましたとさ。
F問題
問題すら見れておりません。
G問題
問題すら見れておりません。
Ex問題
問題すら見れておりません。
これまでの実績
停滞モード継続中です(笑)
総括
今回は、C問題で引っ掛かってしまい、あわや爆死するところでした。
課題としては、問題ではまってしまった時に次の問題に移る判断が遅かったところがあります。
また、Eの実装が間に合わなかったところも、少し入力部分の実装に時間がかかってしまったところが反省点。少し実装にかかるコーディング量を少なくするために、ライブラリを準備した方がいいかと。。
この点を反省して、また次に備えたいと思います。
ということで、また次回も頑張ります。