2020/12/13に開催されたAtCoder Beginner Contest 185に参加しました。
前回のコンテストでは惜しいところで緑復帰ならず。
今回こそは緑復帰するぞと意気込んで挑戦することにしました。
AtCoder Beginner Contest 185 - AtCoder https://t.co/zEIWRpwRWY
— devgenjin77 (@devgenjin77) 2020年12月13日
参加します。とりあえず緑復帰できるように頑張ります。
今回の結果
んで、今回の結果ですが、4完で終了という微妙な結果となりました。
レーティングの方は、ギリギリ緑パフォに届かずで、レーティングは1マイナスという、なんとも残念な結果でした。今回も緑復帰ならずorz
devgenjin77さんのAtCoder Beginner Contest 185での成績:3220位
— devgenjin77 (@devgenjin77) 2020年12月13日
パフォーマンス:785相当
レーティング:796→795 (-1) :(#AtCoder #ABC185 https://t.co/CU3mvTnBr7
惜しくも茶パフォだったため、緑復帰はおあずけとなりました😩😩😩
また次回頑張ります。
振り返り
準備不足と凡ミスがたたってしまい、かなり時間を無駄に溶かしてしまいました。
A問題
入力値から最小値を出力すれば良い。問題なくAC。
B問題
バッテリーの消費と充電を入力どおりにシミュレーションするだけ。
実装にやや手間取るも、問題なくAC。
C問題
一目見て、組み合わせの数、 を出力すれば良いと理解する。
というわけで、組み合わせの数を計算していた過去問のACソースから組み合わせ計算のロジックを持ってきて、サンプルが通ったところで一回投げましたが、これがWA。。
よく見ると、どうもMOD計算が付いてたのがいかんということで、MODなしで組み合わせの数を計算できるソースがあるかをググる羽目となりました。
結局15分ちょいかかって、目的にかなうソースが見つかり、やっとのことでAC。
この程度の関数はちゃんと事前に用意しとかないかんなと反省しきりです。
D問題
左から、白のマスが連続する回数を配列に持ち、その配列の最小値をとする。
あとは、先の配列のそれぞれの数をで割った数を切り上げた数を合計すればOK。
のはずが、、の場合、じゃなくてを返す凡ミスで1WA。。
サンプルに騙されてしまいました。
ここでも少しタイムをロスしてAC。
E問題
残り20分というところで迎えたE問題。問題を一読したところ、何がしたいのかがイマイチよくわからなかったが、とりあえず数分かけて読み解きました。
その結果、整数列とで最大で連続して共通する要素数を導けばなんとかなると思い、とりあえず実装をしてみたがサンプルも通らず。
残り時間も1分ちょいとなったので、書きかけの実装でやけくそ気味に提出しましたが、結果はもちろんWA。ここで時間切れとなりました。
結局解説をみてみると、LCSという最長共通部分列を求めるアルゴリズムの知識が無いと解けない問題でした。。この辺は知識不足で解けない問題だったということで仕方なし。またこの機会に覚えることにします。
F問題
ほとんど時間がなくなっている中、問題文だけチラ見したところ、なんかのライブラリを貼る系の問題かなという印象。
で、コンテスト後に見直してみたら、どうもセグ木をXORに対応させて貼るのが正解だった模様。
セグ木は最近Java用に実装して、練習用のコンテストで通したやつがあったので、それを活用できる機会を逃してしまったなーと、これもまた反省しきりでした。
これまでの実績
ここ最近は800前後で停滞中です。入緑から緑で安定するにはまだまだ精進が必要だと感じる次第。
総括
今回のコンテストも、今の実力としては4完の結果が妥当かというところでしたが、凡ミスのペナルティや、事前準備がちゃんとできれいれば余裕で緑以上のパフォーマンスがでてたかと思います。
そういう意味では、今回は色々反省点がありました。
- 一度使ったライブラリは再利用できるようにまとめておく
- セグ木の使い方をもう少し練習する
- 基本的なアルゴリズムの知識も不足しているので、けんちょん本を通読しておく
以上の反省を踏まえて今後も精進したいと思います。
また、次回も頑張ります。