練習方法

Last-modified: 2014-08-13 (水) 13:18:33

競技プログラミングの練習方法には以下のような物があります。

  • プログラミングコンテストチャレンジブック(通称: 蟻本)等を読んで、アルゴリズムデータ構造?を学ぶ
    競技プログラミングにおいて必要となる、アルゴリズムとデータ構造の教科書の決定版と言える本です。
    相当難易度の高い物まで掲載されていて、真の意味で通して読む事は簡単ではありませんが、競技プログラミングで出題されるアルゴリズム等の多くを網羅しているので、とりあえず1冊手元に置いておきましょう。
  • オンラインジャッジの問題を解く
    AOJ, POJなどと呼ばれる、プログラミングコンテストの問題が多く掲載されたサイトがあり、そこで練習をする事ができます。解答を送信する事で、正誤を判定する事もできます。
  • コンテストの過去問を解く・参加する
    様々なコンテストがありますが、最もメジャーな物ではTopCoder、大学生向けのICPC、中高生向けのJOI等があります。
  • 問題のEditorial(模範解答/想定解法・解説), 同じ問題を解いた人の解説を読む
 

プログラミング言語の習得方法

このWikiは競技プログラミングのWikiであり、自分の利用するプログラミング言語について最低限の(文法や構文などの)知識がある事を前提としていますが、プログラミング自体がはじめてという場合の事について軽く触れておきます。

C, C++

C++のオブジェクト指向の部分などは、理解していればより柔軟できれいな書き方ができるものの、初学者にとっては複雑であり、また実際の所、多くは競技プログラミングで使用されない物です。
したがって、原則Cについて習得した上で、C++の競技プログラミングで必要となる部分を拾って覚えていくのが良いと思います。

Cについては多くの参考書があり、それらについてまた賛否両論がありますが、全くの未経験の人は猫でもわかるCプログラミングなどに目を通しておくと楽だと思います。

また、一通りC言語を習得した上での事ですが、多くの場合そこまでの深い知識は求められないものの、K&R(C言語の開発者の書いた本)を読めば、Cの知識のあやふやな部分の穴埋めになったり、ショートコーディングに使える知識になる、かもしれません…