競プロっておいしいの?(仮)

あの水色ってきれいだよね。(競プロ!! AdC)

競プロ、それは魔窟。

何言ってるかわかりませんね。私もわかりません。どうもNafmoです。

今回は競技プログラミング Advent Calendarに参加させていただくことになりました。これは16日目の記事です。

今回書くのは

  • AtCoderでレート水色にするまでにしたこと...

みたいなことです。きっと、この記事が公開されるときにはレートが水色になってることでしょう。

https://pbs.twimg.com/media/DQsJvHDVQAImuSy.jpg:large

...ア(この記事公開日までRatedコンテストはない)

で、記事公開日にこうなりました。ありがとうございます。
f:id:nafmo17:20171217065915j:image

 

AdCの競プロに関するお話と言っても、私が水色(一歩手前)までに至るまでやったことみたいなお話が多くなりますので、合わないと思った瞬間ブラウザバックしましょうね。...完成させて読み返すと当たり前のことしか書いてませんでした。ごめんなさい。

ああああああああ二時間分の記事とかした(保存しそこねた)

という事で少し雑になります。

で、今書き終わってから読んだんですが、これ、読む価値なさそうですね()

なので少し後ろに追記します。

 

初めての競プロ!(はじめに)

初めて私がまともに競プロをやったのはABC055です

とりあえずABCに出ます。どこまで解けるのかを把握しましょう。

私はそうして ABCだとCが解ける解けないレベルだといことがわかりました。

何となく解ける問題と解けない問題とが出てきた(茶~緑前半)

ABCを基準に考えますが、それ相当のレベルということで、お願いします。

になりますが、A、B問題は、入出力、ループ、配列、条件分岐あたりがわかれば余裕でできます。基本事項の勉強をしましょう。

するとできるようになります。

C問題は、少し考えて、問題文のとおりに実装をするとうまくいきます。

求められているものがわかると簡単にできることが多いです。

D問題は典型的なアルゴリズムを要求されることがあります。

あたって覚えられるといいと思います。

 

壁にぶつかる(~緑)

それでもやっぱり解けない問題は解けないですね。

そういうときは水色未満に関しては、

詰まった難易度の問題を解きまくればできるようになります。

できない問題を解く、これいかにって感じですよね

  1. 解説を読む
  2. 人に聞く
  3. 他の人のソースを読む

みたいな感じになるかなぁと思います。

基本は1をやって、その後自分なりに書いてACを積むとだいたい大丈夫です。

ただ、私は2をやりまくってきました。

これには理由があって、1の解説を読むと一瞬でわかるようになってすぐできるようになってしまったからです。

解説読めばできるけど解けない。この状況は解説読んで解いてる間は改善されません。

なので、人からヒントを貰ってなるべく自分で考えるようにしながら問題をときました。

それしかやってないですが実力は伸びますし、できる問題が増えていきます。

その際に、何がわからなかったのかを必ず考えることにしましょう。

今回解くのに使った方法は何ができて、どういう問題に使えるかを一つずつ知識として増やしていくと、緑くらいの壁は割と簡単に超えられます。

 

これはお勧めなのですが、「解いた問題を自分の言葉で何もわからない人に伝えられるか」どうかを確かめてみると自分の理解度がわかります。抜けていところはそれでわかります。

まとめ。

わからない問題を解いて経験を積みましょう。

実際それだけで何とでもなります。

そしたら自分の中で本当に理解できてるか確認しましょう。

教えてもらったり解説を読むことは悪いことではないですので、積極的に情報を入れて、

その後、少し時間がたった後に自分で解けるか試すだけで変わります。最後に自分の力でできるようになってるか確認できるととてもよいです。

Twitterを使うと競プロerとつながれるので、お勧めだったり。

とりあえずはほかの記事もあるのでここら辺で終わりにしたいと思います。

明日(12/17)は、yukicoderのアドベコン17日目、AdC Siv3Dの17日目、CombNafがあります。

よければ目を通してみてください。

CombNaf2 タイムテーブルと諸注意 - 競プロっておいしいの?(仮)

 

この次の記事は

catupperさんの「こんにちは!競技プロYouTuber始めました!(予定」です。

 

 

おまけ。私のポエムパート

人に伝えるとき、どうやれば伝わりやすいでしょうか。

手順としては

  1. 全体像を把握する。
  2. 細かくやることを分解する。
  3. (わかりにくくて)引っかかりそうなところをチェックする
  4. 具体例などを用意する

これで大体伝わります。

後はその人の反応を見ながらうまく噛み砕いて説明をするといけます。

人に教えるときなんかは、突っかかりそうなところを全部説明させようとして本人に考えさせるようにしています。私がそういう教え方をされて、とてもためになると感じたからです。

これと比較して

  1. 「これは当然成り立つから」
  2. 「こうなるから」

のような言葉を避けるといいかもしれないです。

相手のレベルにもよってはいらないステップですが、

なぜかを説明できるとより理解できていることになると思います。

こんな感じのことをやってみるのも理解を深めるひとつの手段なのではないかと思います。

 

 //これは好みですが先に答えを言ってしまうのはあまり面白くないと思うので極力避けたいですね...