傾向とは

プログラミングコンテストを運営する上で、傾向として考慮すべき点としては、

  • ジャンル
  • 難易度

があり、ジャンルは、

  • 1問ごとのジャンル傾向
  • 全体のバランス

と言った要素からなり、難易度の方は細かく分けると、

  1. ひらめき量: 大まかな方針が見えにくさ
  2. 考察量: 方針が見えたあとでの詳細を検討しないといけない量
  3. 実装量: 詳細が詰まったあとのコード量

に分けられて、さらに、それに直交して

  1. 既存のアルゴリズム成分 = ライブラリ分、知識力とか
  2. ad hoc 成分 = 自分で頑張る分、応用力とかロバスト性とかに対応

という分け方もできて、さらに、

  • アルゴリズム・モジュールの段数: 組み合わせるパーツが増えればその分超線形で難しくなる

といった要素もある。単純に一言で表わされるようなステレオ・タイプで片付けていいものではない。

例えば、去年の ACM-ICPC 国内予選で言うと、

  • F 問題は考察量・実装量が多い
  • G 問題はひらめき量・考察量が多い

と見なせるし、

  • 序盤はモジュールが 1 段で、
  • C or D 以降は 2 段以上になる

と言った見方もできる。

さて、 D あたりだとどうかというと、おおよそ、

  • グラフが役に立って
  • まあまあ ad hoc 成分があり
  • 2段以上の構成

という類型である。

普段よくある例としては、グラフの拡大を伴う最短路である。しかし、いくら出しやすいからといって、同じ種類を繰り返し出していればそれは ad hoc ではなく、やるだけになってしまうし、違う練習になってしまう。上の分析を全く満たせない。果たしてどんな問題を出すと良いのだろう?

今回の模擬国内 D だと、(ICPCの練習をした人ではなく) グラフを勉強した人だと最小全域木はそれなりに知られていて、単純に適用するだけでなく1ひねりアルゴリズムを変更する必要があって、さらに連結性を保つ時刻を前処理で求める部分まであって完璧である。難易度の見積もりも、解いたチーム数を例年と比較すると、若干少なめであるが誤差の範囲内で、裏付けも十分である。

この問題は(単品としてみれば)それなりに上手くいったが、ad hoc 成分というのはどこまでが該当するかは、選手層の実力によって変わり、年によって変動もある。さらに、老成してくれば、初心者にはそうは見えないものが似ているように見えてきてしまう。これらの要因から、全体としてインフレ傾向というトレンドはあるが、細かい見積もりは困難であり、往々にして見誤る。実際今年の B・C・E 問題はそうであった。それ以外に問題文が難しいということもあったが、それを抜きにしてもこの通りである。

近年は AOJ であったり、あり本であったり、選手が特急券を手にする機会が増えて、コミュニティも拡大したというのはいいことだと思う。しかし、そのせいか、他の人も自分と同じバックグラウンドを持って、同じような基準を持っていると勘違いしている人もいるように思う。誰が全域木の知識に比べて、最短路の知識は特別であると決めたのだろう?特急券を持った彼らの通っている道が基本的に過去の偉大な選手の切り開いた道にすぎず、自分自身はそれほど多くの年数の問題も見ていないし、後ろの方の問題も解こうとしていない、そんな状況下で掴んだ傾向なんて、単にテスト前日に山を張っているだけとどこが違うというのか。さらに言えば、その山が完全に当たった結果なんて調べてどうするというのか。過去のコンテストに極端にマッチさせた選手とか、いかにも汎化誤差が大きい選手育成して意味があるのか。これから、地区大会・世界大会へと羽ばたく伸びしろのある選手を選抜できるのか。調子に乗るな。傾向を踏まえるといっても限度がある。もっと広い視野を持て。よく知っている人の言い訳で通用するほど距離が近いものばかりになるとは限らない。

自省を促したい。

今回失敗した点に関しては十分反省し、質の向上に励みたい。しかしながら、それはわ某が主張するように気合でなんとかなるものではないし、某いが期待したように、放置しても妖精さんが裏でうまくやってくれてなんとなくうまくいくとか、そういうものではあってはならない。スタッフも少し長く生きただけで、能力に限りがある。目標を達成でき、かつ 持続可能な コンテスト運営を目指して、頑張りたい。