ACM-ICPC アジア地区予選2012 参加記録

ICPCアジア地区予選に参加しました.

チーム編成

チーム名:UselessUltimate & Escapist Coders
メンバー:@todo314(todo), @k_operafan(k_operafan), @izuru_matsuura(iz)

結果

8問正解,ペナルティ1007で3位でした.

戦略

  • PCを占有する時間が出来るだけ短くなるように,紙コーディングや紙デバッグを出来るだけ活用する.
  • 開始1時間・2時間・3時間・4時間後にチーム全員で問題の内容や解法の案についての共有を行う.実装出来そうな場合,実装時間についてもある程度見積る.
  • 最初はAをiz,Bをtodo,Cをnomeaningが読む.

各問題について

自分が通した問題についてだけ書きます.全体の流れはhttp://d.hatena.ne.jp/todo314/20121121/1353495586を参照

C問題

ちょっと読んでみたら繰り返し二乗法をやる感じで解けそうだったので,とりあえず書いてみたら通った.

D問題

間違っている点を仮定して連立方程式を解く解法で解いた.
ところが"ループの終了条件ミス"で2WA,EPSの設定ミスで1WAしてしまった.
このバグに気付くのに結構タイムロスをしてしまった.

E問題

izさんとペアプロ
dijkstra+BFSで書いたものの,謎のSegmentation Faultに悩まされる.
30分近く悩んだのだが,"ループの終了条件"を間違えていて,vectorの範囲外にアクセスしたのが原因だった.

G問題

izさんがライブラリを写してから交代して実装.
点と直線の距離はライブラリにあったので,余弦定理を活用して点と線分の距離を求めた.
結構細かいミスがたくさんあり,サンプルが通らなかったが,1つ1つ修正していき,サンプうを合わせた.
正しそうだったので提出してみたらTLEした.

計算量を考えると大丈夫そうだったので,適当な枝刈り(解が小さくなる場合)をすることでAcceptedされた.
本番終了後に分かったのだが,TLEの原因はsetを使ったことであったらしい.

I問題

todoさんが解法を大体考えていたが,境界条件とかが煮詰まっていなかったので,一緒に条件を整理した.条件整理後は結構すんなり書くことが出来て,結構すんなり通すことが出来た.

感想

  • 今までのアジア地区大会と結構問題傾向が違う気がした(実装軽めだったり,幾何が簡単だったり,枝刈り探索が出なかったり)
  • チームメイトそれぞれが上手く役割を持てていて,また並列的に解くということが割と上手くいったのはかなり良かったと思う.
  • D問題,E問題ともに紙デバッグでどうにかなるレベルだった気がするので,詰まったらとりあえず印刷を心掛けるべきだなあと.
  • ICPCはやっぱりとても楽しい!