というわけで2009年アジア予選
参加してきました。
一日目
東京へ新幹線でいつものように移動。
新宿駅あたりで昼飯を適当に食ってたら時間がやばいことになったのでタクシーで現地に向かう。
しょっぱなから遅刻して申し訳ないなぁとか思いながら会場に入る。
とりあえず練習問題をいつものようにやる。
適当に
#include<iostream> #include<fstream> #include<functional> #include<algorithm> #include<vector> using namespace std; ...
みたいな感じのinclude書きまくる練習をしつつサブミットする。
その次にJavaチャレンジをする。
問題は陣取りゲームなボンバーマン。
爆風の爆破範囲が自分の領土になるので多くの領土を制圧したら勝ち。
特定のアイテムの四方を先に自分の領土で囲むとボーナスあったりなかったり。
とりあえず、適当に実装を始める。
サンプルとして適当に走り回って爆弾を置けるときに置く奴とボーナスアイテムを狙い撃ちに爆弾を置くふたつのコードがある。
狙い撃ちにするコードを基本にして目標アイテムなくなったら適当に走り回るコードにスイッチするように実装。
自分独自の実相としては
相手の領土を探したりするコード書くのが面倒なので相手がとったボーナスアイテム付近に爆弾をしかけるコードの作成。
相手がボーナスアイテム取ってるなら,
その付近は相手領土のはずなのでそこに爆弾をおいておけばいいだろうという適当実装*1
次にデッドロックの回避、このゲームなのですがひとつ問題があります。
相手と自分が同じ座標に居るときにお互いに爆弾を置こうとしてデッドロック状態になります。
それが起こるとゲームが時間切れになるまで動けないという現象(というかバグ?)があります
仕方がないのでお互いに同じ座標で相手が爆弾を置いた場合は相手に場所を譲る紳士的な機能を実装しました。
この実装は実はデバッグ版の機能で本戦用では勝ってる時はロックを意図的に維持する機能も搭載してましたが
試験用にコメントアウトしていたのを戻し忘れていました。
このミスはJavaチャレンジ終了のお知らせが来た直後に気付きました。
Javaチャレンジ終了後にソースコードをEclipseで開いてコメントアウトしてるのを確認しましたが、
時間切れだったので涙をのんでそのまま放置。
その後Welcomeぱーてーでチーム紹介をした。
今年のチーム紹介は「○○は俺の嫁!」と主張する人が多数いて噴いた。
僕らのチーム名は「auto main =-277;」というチーム名だったので0xのautoについて適当に与太話をするだけの紹介にする。
夜。
宿泊棟に行く、なぜか私の鞄にLANケーブルと電源タップが存在していたので、他チームのなぜか存在していた無線ルータと組み合わせて談話室に無線LANを設置。
適当に談話室で色んなチームとだべりながらいんたーねっこ。
ついでに適当にtwitterのICPC参加者っぽい人をフォロー
自分の居た談話室以外でも同じようなことしてるところがあった模様。
二日目
本戦開始。
今回は正面と側面の高さマップ、2つの点集合を直線で切り分けれるか、水泳のやつ、20個のドア(だっけ?)、あと何か忘れたけど1個の5問をといた。
結果発表は早稲田らしいので早稲田に移動。
移動中になんかよくわからん団体がわめきながら行進してた。
「憲法9条」「最低賃金」「靖国」「派遣」「消費税」「普天間」あたりを何か言ってたけど、
主張の是非は置いといて、もう少し主張範囲を絞って活動したほうがいいんじゃないのかとおもった。
とりあえず会場についたらJavaチャレンジスタート。
基本的には同系のアルゴリズムの人との対戦が多かったので相手のボーナスアイテム付近に爆弾設置した分の領土で勝利パターンで4位まで進む。
で今回の大会で3部門を制覇したHITORI#のチームと戦って惨敗して終了。
最終順位は3位になった。とりあえずJAVAカレーもらた
とりあえず結果は10位でした。もう少し上の順位にいきたかった無念。難度的には解ける問題あったので時間配分ミス。
その後適当に酒のみ会場に行ってみて適当に酒飲んで適当にふらふらになって適当に騒いで部屋にもどって睡眠。
三日目
書く気力がなくなってきたので略。
2社ほど会社見学。基本的に専門分野外の話は聞いていてたのしーなーという感じでした。
その後てけとーに新幹線で帰宅。
*1:なお最初ルールを勘違いして最後に四方囲んだ方がアイテムを獲得すると勘違いして実装したけど先の理由で悪くはなかったのでそのまま放置