いつも頭に問題を

競技プログラミング中心で思ったことを書いてく

競技プログラミング初心者のICPCの思い出

最近、Yazaten氏が発端となって学内で週1回競技プログラミング勉強会をしています
そこで昨日解いてた問題の考察ノートをYazaten氏に見せたところ、解法の導出過程か考察過程かあたりに関して不思議だよねって話をされました
そこに関してなんだか書いておきたいなぁとぼんやり思ったのでこんな感じのタイトルの記事を書きます

以前半年が経ったとかICPCアジア参加記とかで経緯とか多分書いたんですが、ICPCでチームを組まないかと誘ってもらった時は僕は競技プログラミングに関して完全に初心者でした
コンテストに3回出た程度、右も左もわからん雑魚です、C言語使ってました
その後まあある程度問題解いたりアルゴリズム聞いたり蟻本めくったりしてるうちに、少しは競技プログラミングはこういう知識が必要とか、全体像が見えてきた感じがありました
国内予選に出た時は確か緑とかで停滞していた気がします、A問題解いて後半の問題読んで合流してくれたメンバーに説明する程度の役割をしました

その後はアジア地区に向けてチーム練習を週1回やっていました
チーム練習をやっていくうちに自分の役割が無いな~って思いました
そりゃそうで、チームメンバー2人とレートが1000近く離れていて、特に僕が得意な部分や突出した技能もないからです
出来ることと言えば、簡単な問題の解法とコーディング、後半の問題の読解と説明
前者は結構バグらせたし、後者は伝達ミスとか一杯やってたし、出来てるとも言えなかった

まあこんな状況で何かできないかなーとか思ってたわけですが、まあ今からアルゴリズム叩き込んでもあんまり戦え無さそうだし実装力もなぁって感じだったので、考察力とかでなんとか補えないかとか考えてました
根気よく問題読んで、サンプル図示して、出来るなら追加サンプル作って、とにかく問題文から得られる情報を全て並べて、わかることを探すみたいな感じの事をやってました
過去問とか開いて考察して実装せず解説読むとかやって結構問題潰したりもしました
上手くいくときもあるけどまあ大体徒労に終わったり、描かずともわかったでしょそれみたいなことが多かったりしましたが、多少は考察力が付いたかもしれないなあって程度です
まあたまに図示したサンプルが役にたった事もありました
後伝達ミスとかを無くすこととか、わかりやすく簡潔に伝える事とか、そういう部分に力を入れてもいいかなと思って意識的にやったり、問題文を人に伝えるつもりで読んだりしてました

わかりにくいのでまとめると
考察力を上げようとした
サンプルを図示して問題文から得られる情報をなるべく集めた
伝達力を上げようとした

くらいであまりなんかたいそうな事はやってない気がします
新入生も入学してこれからICPCを目指すって人も結構いると思うので、まあそういう活躍の仕方もありえなくはないよって程度の話が伝わればいいかなって思いました
余りに極端な気もしますけどね