ACM-ICPC のレベル別目標

きちんと調査したわけではないですが, 最近持っているイメージを書き出してみたいと思います.

問題数別レベル

  1. はじめてのプログラミングレベル
    • 入出力が使える
    • int とか string とか配列とか基本的なデータ型が使える
    • 順次・反復・分岐の3要素が使える
  2. 初心者レベル (1)
    • 再帰が使える
    • グリッドのような配列で書きやすいデータ構造上で簡単な探索ができる
    • 状態の区別がおぼろげながらつくようになる
    • (1) より多少複雑なプログラムが扱える
    • STL などのアルゴリズム系の標準ライブラリが使える
  3. 初心者レベル (2)
    • 計算量の考え方をある程度持っている
    • (2) よりさらにもう少し複雑なプログラムが扱える
  4. 中級者 (1)
    • 一般のグラフなど配列で扱いにくいデータ構造上のアルゴリズムが扱える
    • 場合によってはオブジェクト指向が使える
    • ダイクストラのような基本的なグラフアルゴリズムが扱える
    • アルゴリズムの適用前に前処理が必要な2段以上の構成のプログラムが設計できる
    • 計算量の意味で意味のある枝刈りを扱える
  5. 中級者 (2)
    • (4) よりさらにもう少し複雑なプログラムが扱える
    • 幾何ライブラリを持っている
  6. 上級者
    • より複雑な構造のプログラムが書ける
    • 自明にわからない法則性を見出し, 適切なアルゴリズムを発見できる
  7. 高速コーダー
    • 国内予選程度の問題なら迷わず, 途中で引っかかることなく解き続けることができる

適当なこと書きました..