Hatena::Grouptopcoder

hirosegolf@競技プログラミング

2013-03-24Marathon Matchで上位目指すときの心構え

もうすぐ2013TCO marathonの予選が始まります。予選は全部で3roundあり、そのうち1回でも4位以内に入ればアメリカでのFinalに参加することができます(旅費も支給されます)。プログラム経験の少ない初心者でも、思考力さえあれば十分上位を狙えると思うので、是非参加してみるのがいいと思います。

以下はmarathon matchで上位を目指すための心構えについて、自分なりに現時点での考え方をまとめた物です。

勿論、人によってベストな参加方法は違うと思うので参考程度です。何か意見とかあれば教えてくれると嬉しいです。

1.問題の最も本質的な部分では妥協しない。

問題の根幹に関わるような部分で妥協すると、上位を目指すのが難しくなることが多いです。

例えば、2011 TCO Marathon Round1の問題(ImageScanner)を例に説明します。

リンク→ http://community.topcoder.com/longcontest/?module=ViewProblemStatement&rd=14502&pm=11367

方針は大きく二通りあると思います。

  1. スキャンする行は最初から決め手しまう。全て開いてしまってから、アルファベットを推測する。
  2. 最初は部分的にスキャンをして、その結果から、次にどこをスキャンするのが最適か順次考えてスキャンしていく。

実装するのも考えるのも、方法1が圧倒的に楽です。実際、本番でも方法2をとったのは1位のcolunさんだけだったと思います。

ついつい楽な方に逃げてしまいがちですが、肝心な部分で妥協すると1位とかを目指すのは厳しいと思います。

2・よく考える。無駄な実装をしない。慎重になる。焦らない。

「方針を思いついたら、何も考えずすぐに実装」というのはやりがちですが、時間の無駄遣いになりやすいです。

実装する前に、「この方針の長所と短所は何か?」、「この方針が失敗する可能性としては、どんなものが考えられるか?」、

といったことについてよく考えておくと、実装した後の次のステップにも移りやすいです。

特に短所(となる可能性のある部分)について、よくよく考察しておくのは大事だと思います。

3.根を詰めてやらない。気合と根性で乗り切ろうとしない。

この項目は2週間フル参加しようと思っている人以外は多分関係ないです。

コンテスト中は冷静さが大事です。

ついつい「コンテスト期間中は一秒たりとも無駄にしないぞ」とか意気込んだりしがちですが、

そんな緊迫した精神状態では判断ミスをしやすいです。

ただ闇雲に「実装したけど、やっぱり駄目だった」を繰り返すと、無駄に時間が過ぎていってしまいます。

それが原因でさらに自己嫌悪に陥ったりすると最悪です。

致命的なミスさえしなければ、2週間は結構長いです。マイペースで取り組むのがいいと思います。

睡眠不足でも思考力が鈍らないよって人以外は、睡眠も十分にとったほうがいいです。

utmathutmath 2013/03/25 08:37 気を付けます!

ゲスト



トラックバック - http://topcoder.g.hatena.ne.jp/hirosegolf/20130324