2022/7/17に開催されたAtCoder Beginner Contest 260に参加しました。
昨日のARCでは、1完しかできずで、レートの方は大幅に下げることに。。
ということで、今日のABCでは、なんとか昨日の負けを少しでも取り戻そうという気持ちで臨むこととしました。
Rated参加します。
— devgenjin77 (@devgenjin77) 2022年7月17日
昨日の負けを少しでも取り戻せるよう、頑張ります✊✊
AtCoder Beginner Contest 260 - AtCoder https://t.co/s6e1GKbBy4
今回の結果
で、今回はなんとか4完を確保することができました。
肝心のパフォーマンスは、緑上位。なんとか昨日の負けを半分以上取り戻すことができましたとさ。
4完緑パフォで、なんとか昨日の負けを少し取り戻しました😄
— devgenjin77 (@devgenjin77) 2022年7月17日
来週も頑張ります。
devgenjin77さんのAtCoder Beginner Contest 260での成績:1788位
パフォーマンス:1169相当
レーティング:1013→1030 (+17) :)#AtCoder #ABC260 https://t.co/SS2MqpCdC9
振り返り
今回は、B問題に少し手こずってしまいました。
A問題
少し工夫ができないか考えたものの、上手いやりかたが思いつかないので、愚直に解くことに。
文字列中に現れた文字と、その出現回数をMapで管理し、最終的に出現回数が1の文字を出力。なければ-1を出力という感じで実装。
提出して、問題なくACが取れました。
3分24秒で1完。最近、A問題を解くのに少し時間をかけすぎの感があります。
提出コード
https://atcoder.jp/contests/abc260/submissions/33293963
B問題
B - Better Students Are Needed!
与えられたデータをいろんな要素でソートする感じの問題。
Javaでソート順を決めるには、Comparatorのメソッドを実装するなど、結構実装がめんどくさかったりするんだが、それを3回もやるのは超めんどくさい。
しかも、ソート順を決める方法も、結構忘れていたので、まずは実装方法をググるところから始めることに。
ということで、実装自体に大幅に手間取ってしまいましたが、やるべきことは問題文のとおり実装するだけなので、なんとか完成にこぎつけてACを取ることができましたとさ。
25分59秒で2完。ちょっと、この問題は復習して、もう少し効率が良いやり方などなかったを調査してみたいところです。
提出コード
https://atcoder.jp/contests/abc260/submissions/33303737
C問題
見た目の制約は緩めなので、再帰を使って解ければいいかなという印象の問題。
しかし、どうにも関数の実装方法が思いつかずなので、どうにかして解ける方法を模索することに。
しばし検討した結果、Queueに宝石の色とレベルと個数を管理したクラスを突っ込み、あとは、Queueの先頭から取得した宝石の色に応じて、変換できる宝石の色とレベルと数をQueueに突っ込むという実装をすることに。
処理時間が少し気がかりでしたが、問題なかったようで、無事ACが取れましたとさ。
44分44秒で3完。少し取り戻した感があります。
提出コード
https://atcoder.jp/contests/abc260/submissions/33308912
D問題
当初の印象としては、愚直にシミュレーションするか、またはグラフっぽく捉える事で解ける問題なのかどっちなんだろうという印象。
とりあえず、場に見えてるカードのうち、特定の数字より大きい最小の数字を取るためのデータ構造が必要となるが、これはTreeSetを活用すればなんとかなる。
あとは、カードを重ねた時に、何枚になっているかと、重なっているカードの数字を管理する必要があるが、一旦グラフの隣接リストの要領で、山の一番上のカードの数字に対して、山の下にいるカードの数字を連結させることで管理する方法を試してみる。
で、一旦この実装でサンプルが通ったので、提出してみたらなんとこれがTLE。。
改めて考え直してみたところ、カードの山を連結成分として捉えることで効率化できるのではないかということで、Union-Findを使うやりかたを実装することに。
これが見事にハマってくれたようで、なんとかACを取りきることができましたとさ。
80分58秒1ペナで4完。これでなんとか負けを回避できたかと。。
提出コード
https://atcoder.jp/contests/abc260/submissions/33316373
E問題
残り20分程度あるので、一応問題を読んでみましたが、なにも解法が浮かばず。ここで時間切れとなりました。
F問題
問題すら見れておりません。
G問題
問題すら見れておりません。
Ex問題
問題すら見れておりません。
これまでの実績
昨日の負けを少し取り戻しました。それにしても停滞モードが長い。。
総括
今回は、B問題とD問題で結構な時間がとられたので、水パフォを逃したかという印象。
同じ4完の人でも、早めに解けてる人が水色コーダーなどになっているようなので、難しい問題を解く練習はともかく、前半の問題を速く解く練習にも力を入れていかないといけないな、という感想です。
ということで、また次回も頑張ります。