50ACを経てAtCoderコンテストに初挑戦した!
憧れのAtCoderのコンテストに参加してきました!
いや、ほんとにドキドキの緊張しまくりで大変でした、、、
タイトルの通り、完全に予備知識なしで飛び入りで挑んだわけではありません。割とそこそこ準備して挑みました。(たぶん)
これから、参加した経緯ややったこと、結果とかとかあばうとに書いていこうと思います。是非お付き合いして閲覧数に貢献してください(そして、初めてブログを書いている私の自信をUPさせてください←)
目次:
コンテスト参加までの経緯とか!
プログラミングバリバリでつよつよな先輩に誘われたのがきっかけでした。
な状態ではあったんですが、プログラミング自体にはぼちぼち触ったことはある(レベル的にはif文、for文が使える(≠使いこなせる)。ほんの少し指先だけ深層学習にも触れてるという感じ)、楽しいや好きって感情も沸くし、興味もあるからやってみようかな?そんな感じでした。時期的には去年(2018年)の11月ぐらいでした。
そして、早速AtCoderのサイトに行き、登録。
これからがんばるぞー!(盛大なフラグ)
思い切り忙しい時期に登録したことや、単純にモチベの問題(早い)などにより早々にAtCoderを離れましたとさ、、、、、()ただ、離れる前にいい感じに休みなどもあり10日ぐらいはがんばった(自己満足)。やったことは次の見出しで!
そして、今年の3月中旬~下旬(正確には一瞬だけ2月にも触れてる)に時間とモチベを再降臨させ、舞い戻ってきました!
修行の日々!←
具体的に言うと、AtCoder Problemsで50問ほど問題を解いてから挑みました。
↓が初参加したときの精進グラフ(?)です。
B問題とC問題を中心に解いていたことがわかりますね。(誰目線())
ついでに、この時は50AC記念+10000P+10Days継続記念ということで、
私がめっちゃくちゃ嬉しかった!!!!
ということもわかりますね。(誰目ry)
↓↓これより暫く50ACの経緯!(思ったより余談なので飛ばしていいかも!)
さて、ようやく本題っぽいこと、、、の前に、そもそもなんで50ACしてからの参加だったんだ?って話です。別に何度でも出れるし、AtCoderは参加回数が少ないうちはレートが低めについてしまいます。準備をし過ぎても、あんまりメリットはないんじゃないかなと私自身も思います。冗長になっても仕方がない話なので、簡潔に言うと、
初参加ですっごくレートが伸びてたらめっちゃつよそう!かっこいい!すごいって言われたい!
これに尽きます()
実際、ツイッターとかみているとそんな人が沢山いるようにみえて、憧れがありました。そういう人達は(恐らくですが)、元々数学のガチ勢(数オリとか出てた人)や他の競プロをやっていた人、仕事などでガッチガチにプログラムに触れていた人、そして、適性がとんでもない人(天才)、などだと思います。私はこれらにこれっぽっちもかすってすらいません。ただ、憧れはあったので、少しでもそういうに風に演じられたな~、すごいって言われたいな~という邪な想いがあったからです。
褒められるのがとっても好きなので!(褒めるのも好き!
あとちょっとのよくわからないプライドみたいなのもあったかも??ただ、変にちょっとかっこつけようとし過ぎてた感があるのでなんとなく反省してます(苦笑)。というのも、この計画を少し甘く見てた節があるからです。もっともっとACとか決めてから参加できてれば良かったんですけど、コンテストに参加したい欲求に負けてしまいました(笑)。50ACは私的には及第点ではあったんですが、ちょっと微妙ですよね( ;∀;)。けれど場合によってはこういうプレイングもアリだと思うし、誰かやってカッコ良く決めてほしいなとも思います(笑)
(脱線し過ぎそうなのでこの話はこの辺で)
さて、本題っぽいことです!
前述した通り、要は初動で高パフォーマンスをとりたかったわけです。なので、コンテスト初参加までの約3週間ほど、私なりに精進(つよつよな人からみれば大袈裟かもしれませんが)した方法とその結果を示していこうと思います。どんなことをして、どうなったか、そんな風に参考になったらなあと(願いすぎ?)
私がやったことは大きく分けて2つです。
- けんちょんさんのQiitaを参考に問題を解いていった。
- AtCoder Problemsから新しい順に問題を解いていった。
まずは、けんちょんさんのQiitaでおべんきょしました!というか、二進も三進もわからない中、これ以上なく頼りになりました。
主に、AtCoder Bebinners Selectionの勧めや後半にはB問題を解くのに重要な典型問題がまとめています。
というわけで、まずはAtCoder Bebinners Selectionの問題から解き始めました。A~C問題まであり、C問題では計算量を考える必要がある問題や少し発想が必要な問題もありました。しかし、前提知識としてはif文やfor文が少しわかっていれば、解ける問題が多く、わからなくても、解説を見れば十分解ける。調べる苦労がまだ少ない分、始めたばかりのひとにとって、すごくとっつきやすく感じました。
ここで、競プロの形がなんとなくわかったなぁと思います。
それから後半にまとめられている問題(グリッド、累積和、数学的な問題など)を解き始めました。Minesweeperがラスボスぐらいにみえました。
状態をループする問題も非常に難しく感じましたが、なんとかやり切りました。
取り組み方については
- 2度取り組んだ
- わかった問題も解答を見てやり方が違ったらリトライ
- 解答通りの解き方でも気になった解き方を思いついたらやってみる
「2度取り組んだ」については、登録してやり始めた時(半年ほど前)にやったいたんですが、久しぶりに始めたときに殆ど忘却していたので、再度解いたため、偶然そうなりました。しかし、結果的に2度解いたことはとっても功を奏しているなと思います。基礎的な良問がそろっている(そもそもAtCoderの問題はどれも良問だとは思いますが!)ので、このおかげで土台がしっかりとできて、以前理解が進まなくなっていた問題もスムーズに考察できるようになっていたなと思います。
そして、こちらのほうもやりました。
動的計画法の手前ぐらいまでやりました。この辺りで得られた知識を箇条書きにしておきます。(けんちょんさんのQiitaを見てもらえばわかるとは思いますけど!)
知識としてはこれぐらいはついたと思います。
そして、C問題ぐらいまでの内容は抑えられただろう、、、と考えて、AtCoder Problemsから過去問を解き始めます、、、、
しかし、びっくりするぐらい解けませんでした( ;∀;)
B問題までは確かに解けました。しかし、C問題は全然でした、、、ぶっちゃけ、簡単な方なんだろうなという認識はあったものの、D問題のGrid Repaintingとかは自力ACできていたので、変な自信がついており、競プロの難しさを再認識しました、、、
ただ、C問題を10問ほど解いたあたりで慣れてきたなという感触がありました。自力ACも少しずつできるようになってきました。何故かといわれると、シンプルにやってきた問題の幅がまだまだだったんだなってことだと思います。ただ慣れるのが(私的に)早かったのは、けんちょんさんのまとめのおかげだなぁ、とまざまざと感じました(圧倒的感謝でも足りないぐらい感謝してます!)。
そうしてC問題レベルぐらいまでの知識と、少し慣れてきたあたりで実際のコンテストに挑みました!!(目標は3冠でした!)
ABC124に挑戦!
AtCoder Beginner Contest 124に参加しました!
正直ここまで書いてへとへとなので、かなり雑いかもしれません(想定の10倍ぐらい長くなった気がする。)
問題のリンクを貼っておくので問題の概要は省きます。
注意:特に問題の解説等はなくほぼ感想です。
A問題
コードを見てもらえばわかると思うのですが、かなり血迷いました。速攻ACしようと力みすぎて、全く考察し切れてなかったです。つらい()6分ほどかかりました。
B問題
落ち着いて問題文通り、そのまま実装したつもりです。8-9分で書き終わり、1-2分をしっかりテストにあててACできました。A問題でのことをきっちり反省できていますね()
C問題
こちらは最後の出力(18行目)を思いつくまでに混乱したりあれしたりで時間がかかりました。あれ?あれ?っていうくだりを何度やったかわかりません。逆にfor文内の発想まではすぐできて、ここまでかければあとはなんとかなりそう!という見切り発車だったんですが、上手くいったといえばそうだし、いなかったいえばそうだし、うーん。
40分ぐらいかかりました。
D問題
にゃーん
総評(嘘、感想)
3冠!!!!!うれぢいいいいいいいい!!!!!!!
けど、くやぢいいいいいいいいいいいい!!!!
というのも、3冠達成者が多く、かかった時間の関係で思ったよりもパフォが出てなかったです!コンテスト中、3冠した時点で、「今回C問題にしては簡単な気がしたし、思ったほどパフォ出てないかな?」とは思っていたものの、順位表をみたところ下から数えた方が早くて、マジで涙目(嬉し涙ならよかったのに、、、)になりそうでした、、、
大体こんな感じで第1回ブログは閉廷しようと思います。
本当に拙いところばっかりだったと思いますが、もし読んでくれた方がいたなら、
本当に本当にありがとうございました!!!!!!
それから最後に、忘れていたので自己紹介しておきます。すいかです!これからたまに気が向いたらまた投稿するかも!よろしくお願いします~!
結論:けんちょんさんはかわいい()