この記事は新歓ブログリレー2020 2日目の記事です。
16B→20Mのninjaです。競技プログラミングなどをしています。
去年の12月にICPCアジア地区マニラ大会2019に参加しました。
ICPCとは
ICPCはACM国際大学対抗プログラミングコンテストの略称で、大学対抗の名の通り大学生向けのプログラミングの大会です。大きな特徴として、3人のチームで1台のPCを使って解くなどがあります。
国内でもアジア地区大会は毎年開催されており、インターネットで行われる予選を勝ち進めば参加することができます。
国外のアジア大会にも参加することができ、今回はフィリピンのマニラで開催された大会の話です。
メンバー
- ninja
- yamada
- mikit
去年の3月ごろに組んで、国内予選までは週1程度でチーム練習をしていました。
タイにはeiyatonariが、他地区にも強いチームが参加しそうだったので、ミャンマーあたりを狙っていました。が、いつの間にか開催国から姿を消してしまったためマニラに参加することになりました。
コンテスト
12/12
昼ごろの飛行機で羽田からマニラに行きました。12月とは思えない暑さ
12/13
東工大のフィリピン拠点のあるデラサール大学の見学をしました
12/14 リハーサル
会場はアテネオ大学
リハーサルでは印刷や提出を試した
手元で順位表が見れず、スクロールしているスクリーンを見ないといけなかった
毎食割とガッツリしたものが出てくる。フィリピンは大体そういう感じらしい
12/16 本番
5時間13問
Aのみ簡単枠、以降がランダム
A
3か国の挨拶から国名を出力する問題
英語読解的に速そうなmikitくんに解いてもらう
I
大文字と小文字のペアのAAが与えられてどちらが大文字、小文字かを判定する問題
- 大文字のほうが大体ピクセル数が多い
- 小文字だけ下に抜けている
を判定すると良い。想定解通りだった
yamadaが実装
M
AかPの値が振られたグリッドマップで 範囲選択&一方向に拡大 のような操作を何回で全面をAにできるかという問題
- 元からAなら0回/Pなら不可能
- 端の列or行が全部Aなら1回
- 四隅にAがあれば1回で↑にできる
任意の列or行でも同様 - 端にAがあれば↑にできる
- どこかにAがあれば↑にできる
のような場合分けで解けます。
ninjaが実装、1回ぐらいはWAをもらいそうだと思っていたので一発ACできて良かった
D
Union Findを毎回生やすとMLEする系の問題
JavaのMLEがRE扱いだったのと勘違いで混乱させてしまう
mikitが実装
L
グラフで最大と最小を求める系の問題
yamadaが実装
結果
5完13位でした
12/15
成田着
寒い
感想
アジアの強いチームが集まっていて大変厳しい。2年前の結果を見て行先を決めたが2019は半分くらいが国外チームであんまり参考にならなかった。
今年が回数的に最後のICPCなので予選を通過していきたい。
明日の担当者は@NABE、@Kejunです。お楽しみに。