AtCoder Beginner Contest 185 参加記

2020/12/13に開催されたAtCoder Beginner Contest 185に参加しました。

atcoder.jp

前回のコンテストでは惜しいところで緑復帰ならず。

今回こそは緑復帰するぞと意気込んで挑戦することにしました。

今回の結果

んで、今回の結果ですが、4完で終了という微妙な結果となりました。

ABC185結果

ABC185結果

 

レーティングの方は、ギリギリ緑パフォに届かずで、レーティングは1マイナスという、なんとも残念な結果でした。今回も緑復帰ならずorz

振り返り

準備不足と凡ミスがたたってしまい、かなり時間を無駄に溶かしてしまいました。

ABC185提出結果

ABC185提出結果

A問題

A - ABC Preparation

入力値から最小値を出力すれば良い。問題なくAC。

B問題 

B - Smartphone Addiction

バッテリーの消費と充電を入力どおりにシミュレーションするだけ。

実装にやや手間取るも、問題なくAC。

C問題 

C - Duodecim Ferra

一目見て、組み合わせの数、_{L - 1} C _{11} を出力すれば良いと理解する。

 

というわけで、組み合わせの数を計算していた過去問のACソースから組み合わせ計算のロジックを持ってきて、サンプルが通ったところで一回投げましたが、これがWA。。

 

よく見ると、どうもMOD計算が付いてたのがいかんということで、MODなしで組み合わせの数を計算できるソースがあるかをググる羽目となりました。

 

結局15分ちょいかかって、目的にかなうソースが見つかり、やっとのことでAC。

この程度の関数はちゃんと事前に用意しとかないかんなと反省しきりです。

D問題

D - Stamp

左から、白のマスが連続する回数を配列に持ち、その配列の最小値をkとする。

あとは、先の配列のそれぞれの数をkで割った数を切り上げた数を合計すればOK。

 

のはずが、、M = 0の場合、1じゃなくてNを返す凡ミスで1WA。。

サンプルに騙されてしまいました。

 

ここでも少しタイムをロスしてAC。

E問題

E - Sequence Matching

残り20分というところで迎えたE問題。問題を一読したところ、何がしたいのかがイマイチよくわからなかったが、とりあえず数分かけて読み解きました。

 

その結果、整数列ABで最大で連続して共通する要素数を導けばなんとかなると思い、とりあえず実装をしてみたがサンプルも通らず。

 

残り時間も1分ちょいとなったので、書きかけの実装でやけくそ気味に提出しましたが、結果はもちろんWA。ここで時間切れとなりました。

 

結局解説をみてみると、LCSという最長共通部分列を求めるアルゴリズムの知識が無いと解けない問題でした。。この辺は知識不足で解けない問題だったということで仕方なし。またこの機会に覚えることにします。

F問題

F - Range Xor Query

ほとんど時間がなくなっている中、問題文だけチラ見したところ、なんかのライブラリを貼る系の問題かなという印象。

 

で、コンテスト後に見直してみたら、どうもセグ木をXORに対応させて貼るのが正解だった模様。

 

セグ木は最近Java用に実装して、練習用のコンテストで通したやつがあったので、それを活用できる機会を逃してしまったなーと、これもまた反省しきりでした。

これまでの実績

ここ最近は800前後で停滞中です。入緑から緑で安定するにはまだまだ精進が必要だと感じる次第。

コンテスト実績

コンテスト実績

総括

今回のコンテストも、今の実力としては4完の結果が妥当かというところでしたが、凡ミスのペナルティや、事前準備がちゃんとできれいれば余裕で緑以上のパフォーマンスがでてたかと思います。

そういう意味では、今回は色々反省点がありました。

  • 一度使ったライブラリは再利用できるようにまとめておく
  • セグ木の使い方をもう少し練習する
  • 基本的なアルゴリズムの知識も不足しているので、けんちょん本を通読しておく

 以上の反省を踏まえて今後も精進したいと思います。

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