AtCoder Regular Contest 105 参加記

2020/10/11に開催されたAtCoder Regular Contest 105に参加しました。

atcoder.jp

ARCの参加は先週に続いて2回目になります。

前回の感想としては、最初の2問ぐらいがABCの前半レベルで、あとはめっちゃ難しいという感じなんで、今回は2完ノルマで臨んでみることにしました。

今回の結果

で、今回の結果はノルマ通りの2完終了となりましたー。

ARC105結果

ARC105結果

緑パフォだったので、レーティングはプラス。連日のHighest更新となりました。

振り返り

前回と同じく、C問題以降は歯がたたずでした。

ARC105提出結果

ARC105提出結果

A問題

A - Fourtune Cookies

A,B,C,Dが与えられる。そこから1つ以上の数を選んだとき、選んだ数の和と選んでいない数の和が同じになることがあるかという問題。

一目上手い解法が思いつかないので、とりあえず愚直でやることに。

もらったA,B,C,Dを配列につっこんでソートしてから、以下の判定をしました。

  • 一番大きい数と、残りの数の和が一緒ならYES
  • 一番目と二番目に大きい数の和と、残りの数の和が一緒ならYES
  • 一番目と三番目に大きい数の和と、残りの数の和が一緒ならYES
  • 一番大きい数と一番小さい数の和と、残りの数の和が一緒ならYES
  • 上記の条件にあてはまなければNO 

他の上手いやり方もあるかと思ったが、考えてる時間もないので、ゴリ押しで実装してAC。

B問題

B - MAX-=min

 これも上手いやり方がわからんので、愚直にシミュレーションすることに。

配列aを読んでいって、数字とその個数をそれぞれTreeMapのKeyとValueで管理していく。最大値XはlastKey()、最小値xはfirstKey()でそれぞれ取得できるので、あとは、問題にある通り随時最大値のカードをX - xに書き換えていく。

この処理を続けて行って、Mapのサイズが1になったら終了。

 大分愚直な実装で、実際提出したら、結構反応が鈍い。あわやTLEあるかとヒヤヒヤしましたが(笑)、なんとか1.7秒台で終わってくれました。

後日もっといい解法がなかったか調べたいと思います。

C問題

C - Camels and Bridge

この問題から全く歯がたたず。

考察としては、ラクダの数の最大が8とかなので、橋のパーツの数とラクダの数で2次元配列作ってDPすればいいんじゃね?的な雑な考えしか浮かばずでした。

結局、それっぽい実装をしたものの、サンプルの4分の2しか通らずで結局提出できず。

他の問題もチラ見しましたが、そのままCに時間を費やしてタイムアップとなりました。 

D問題

D - Let's Play Nim

 Nimというのは、以前のコンテストでも題材に上がって居たやつで、全部の山の数のXORをとって結果が0だとどっちかが必勝(うろ覚え)という知識ぐらいしかありません。

問題文に少し目を通しましたが、これならCの方がやれそうかな?という根拠のない自信が出てきたので、パスしました。

E問題

E - Keep Graph Disconnected

 問題文だけチラ見して退散しましたー。

F問題

F - Lights Out on Connected Graph

 Eと同じです。

これまでの実績

一応Highestですが、今の実力だと、いいとこ緑←→茶を行ったり来たりする未来しか見えないです。

コンテスト実績

コンテスト実績

総括

 ゴリ押しでなんとかなる問題ぐらいしか解けてない感があります。

高レベルの問題もコンテスト中に解けるように精進していくしかないですね。

また、次回も頑張ります。