ICPC国内予選エアプ参加記

ICPCの国内予選がありましたね。僕はこれに参加していないので、エアプ参加記を書きます。大会形式すら知らないので完全にエアプです。

 

チームについて

 幼馴染のあおいちゃんと、サークルの先輩の黒子さんと僕の3人チームで出ました。

あおいちゃんは高校1年生のときに競技プログラミングを始め、練習サイトではユーザー名が青色になっています。髪の毛はショートで今は青いのですが、高校の頃は茶色とか緑とかに染めていた時期もありました。理由はよく分からないのですが、とにかく色が奇抜すぎるのであまりコメントしないようにしています。

黒子さんはいつから競技プログラミングを始めたのかよく分かりませんが、ユーザー名は黒色です。本人によると、黒子さんはユーザー名の色を自由に設定できるようになっているらしく、黒が好きなので黒にしているそうです。以前あおいちゃんに「君も自由に色を設定できるようにしないのか」と聞いてみたところ、嫌な顔をされてしまいました。女の子って難しいですね。

僕は今回あおいちゃんに誘われて初めて参加したので、競技プログラミングのことは正直ちょっとよく分からないです。一応プログラミングの経験はあり、あおいちゃんからは「最初の方の簡単な問題を解いてくれれば大丈夫だよ」と言われていました。

 

 

本番前

あおいちゃんが中心になってメンバーに声をかけ、1か月くらい前から週に1度3人で集まって過去問を使った練習をするようにしていました。しかし、黒子さんの生活習慣が不規則なせいで3人そろって練習できたことはほとんどなく、僕が1人で最初の1,2問を解いたらあおいちゃんに交代してもらって後はあおいちゃんが全部やる、という集まる意味のあまりなさそうな練習しかできていませんでした。しかも「同時にパソコンを使えるのは1人まで」という変わったルールのせいで、僕が解いている間あおいちゃんを待たせてしまうのを気にしてしまうくらいでした。

 

 

当日

 朝10時に会場前に集合だったのですが、前日の午後にかなり長い昼寝をしてしまったため全然眠れず、あおいちゃんが起こしに来てくれなければ寝坊してしまうところでした。朝ごはんにあおいちゃんから弁当のおかずの残りをちょっともらい、2人で会場に向かいました。僕たちは時間通りに会場についたのですが、黒子さんはやはり寝坊を決め込んでしまったらしく、連絡すらつきません。どうしようもないので、とりあえず2人で出つつ黒子さんが来るのを待つことにしました。

会場はチームごとに部屋が別々になっており、トイレ以外で部屋から出なければ声を出して話したり席を立ったり食事をとったりしても大丈夫とのことでした。机には人数分の椅子が用意されていて、パソコン1台と軽食が置いてありました。

 

 

本番

 問題はA問題からZ問題までの26問あり、これを10時間かけて解きます。最初の数問は難易度順に並んでいて、僕は過去問の傾向からA問題とB問題を順番に解きました。どちらも1回の提出で正解判定をもらえたので安心しました。あおいちゃんと席を交代し、あおいちゃんがC問題からE問題までをサクサクと解いていきました。あおいちゃんは提出した問題の判定結果を見ずに次の問題の提出コードを書き始めていて、慣れている人は違うなあと思いました。

F問題から先は、E問題までより難しいような問題が難易度に関係なくランダムに並んでいるらしく、あおいちゃんは画面に表示されている順位表と印刷した問題用紙をにらめっこしながらどれを解こうかと考えているみたいでした。僕はもう用がなさそうなので席を立って部屋をウロウロしようとしましたが、あおいちゃんから「ちゃんと席に座って椅子を温めるように」という旨の注意をされてしまいました。僕はとっさに機転を利かせて、まだ来ていない黒子さんの椅子の座面にパソコン本体を置いてみました。効果はてきめんで、あおいちゃんに褒められました。

開始から1時間ほどして、M問題とG問題の考察が終わったらしく、あおいちゃんによると実装も簡単らしいので、僕に実装してみないかと提案してくれました。どちらも自分には不相応な難易度の問題ですが、あおいちゃんの説明を聞くと確かに実装はできそうだったので挑戦してみたところ、どちらも正解判定をもらうことができたので、あおいちゃんとハイタッチして喜びあいました。チーム戦っていいですね。ちなみに黒子さんはまだ来ていません。

 

その後2,3時間、あおいちゃんも粘り続け僕も椅子を温め続けで何とか半分ほど解くことができましたが、残った問題は難問ぞろいでなかなか手が付けられそうにありませんでした。気が付くとかなりおなかがすいていたので、休憩ということで2人であおいちゃんの手作り弁当を食べることにました。あおいちゃんの弁当は高校のころは毎日食べていましたが、大学に入ってからは時間割も全く違うため食べる機会はまれでした。とてもおいしくて大好きなので本当は毎日でも食べたいのですが、照れくさくてなかなか言い出せません。不用意においしいとか言うとあおいちゃんがすぐ調子に乗るのもあって、高校のころは「可もなく不可もない」に近い意味の類語表現をたくさん覚えて使い回すようにしていました。

でも久しぶりに食べたあおいちゃんの手作り弁当は本当においしかったので、思わず「すごくおいしい」と言ってしまいました。案の定あおいちゃんは有頂天になり、その勢いで食べながら2問くらい解いてしまいました。実にコンテスト開始5時間後のことでした。

 残り5時間であと10問になりました。窓から差し込む日の光も傾き始め、30分に2問解かないと全問解けないという難易度にマッチしない絶望的なペースも相まって、2人に焦りが出てきます。あおいちゃんは問題用紙と一層真剣ににらめっこするようになり、僕も尻に力を入れて椅子が少しでもより効率的に温まるようにと踏ん張りました。しかし、既に手のつけようもない問題しか残っておらず、完全に膠着してしまいます。順位表を見ても、この10問は最上位層にもほとんど解かれておらず、あおいちゃんが解くには難しそうでした。また、自分たちのチームが解いた問題はやはり多くのチームに解かれているため、全体順位も決して高くありません。

 

そのまま30分が経ち、僕が「そういえば黒子さんまだだね」と言いかけた瞬間、いきなり部屋のドアが勢いよく開き、全身黒のいつものスタイルでまさかの黒子さんが登場しました! そのショックであおいちゃんがついにショートしてしまいました。黒子さんは、僕たちの耳に届くことなく天井まで浮き上がってしまうくらい軽い謝罪の台詞を口にしたあと、より温かそうな僕の椅子を奪ってパソコンの前に陣取りました。そしてまだのびているあおいちゃんの手からくだんの10問の問題用紙をひったくり、適当な順番にシャッフルして(後日聞いた話によると適当にシャッフルしたのではなく瞬時に判断しつつ難易度順にソートしたそうです)、一番上になった問題から順番にバチバチと提出コードを打ち始めました。黒子さんは僕があおいちゃんの背中を揺すったりおでこを冷やしたりしている間に「はいA~C~」とか意味の分からない(問題に正解したという意味だそうです)言葉を連発し続け、一時間後にはなんと暫定1位に躍り出てしまいました! そしてそれを知ったあおいちゃんがまた気を失うことになりました。

 その後の黒子さんは、提出コードを書き溜めておいて2位のチームが1問解くたびにこちらも1問通すという嫌がらせみたいなことを続け、残り30分になって順位表が凍結されるとその瞬間に残りの問題を一斉に通すというかなり陰湿なことをしました。2位のチームさんごめんなさい。予選通過枠は複数あるみたいなので、世界大会でがんばってください。

 あと、あおいちゃん。本当にお疲れさま。黒子さんはすごいけどダメ。

 

 

結果

本番の様子から察しはついていると思いますが・・・・・・

   国内予選1位通過

 です! 世界大会でもよろしくお願いします!

 

 

 

書いた感想

3人チームで出るってことしかよく分かってませんでした。競プロに真剣でなくてすみません......

 

追記(2021/3/17)

なんとこの参加記に続編が出ました......(は!?)よんでね!

ICPC決勝空気演奏参加記2 - よこのブログ

 

ウルトラマンがすぐ光線を撃たない理由

ウルトラマンはなぜ変身直後に必殺の光線を撃って怪獣や宇宙人をやっつけることをせず、わりと制限時間いっぱいまで戦ってから光線を撃つのでしょうか?僕がまだ小さかったころに親しんでいたウルトラ作品を最近になってぽつぽつ見返すようになった今、考えたことがあります。それは、

 

ウルトラマンは敵と複数回接触して倒すのに最適な光線の性質を決定してから撃っている

 

ということです。この仮説について詳しく説明したいと思います。

 

 

御存じの通り、ウルトラマンは悪の怪獣や宇宙人から人類を守ってくれる正義のヒーローです。その戦う相手は地球に元々いた怪獣だけでなく、宇宙からやってきたり、変わった武器を持っていたり、未知の元素でできていたり、異次元に住んでいたりと様々です。戦う場所だって地上や空中はもちろんのこと、水中や宇宙空間、はては異次元空間、さらにはもはや現実世界ではなく誰かが作った物語の世界などで戦わされることだってあります。本当に毎週お疲れ様って感じです。

 

そんな数限りない種類の相手・数限りない種類の戦場の全てで敵を倒すことができる全く同一の光線なんてあるはずがありません。きっと同一の技名ながら撃つ相手によって波長スペクトルや一緒に飛び出しているかもしれない物質の配合などを色々と調整しているのでしょう。しかし、流石のウルトラマンも、初めて戦う相手を見ただけで最適な光線の成分を決めることはできません。相手の体表がどんな物質でできているかは、実際に接触しないと分からないでしょう。それなら適当に敵の表面をタッチするだけで良いではないか、という意見もあると思います。しかし、その触る行為がちゃんとパンチやキックなどの戦闘動作でなければならない理由が3つあります。

 

第一に、ウルトラマンが怪獣や宇宙人を触るのは、僕たちが動物園でうさぎの羽毛をサワサワするのとは訳が違います。相手は人類やウルトラマンに対して明確に敵意を持っている場合がほとんどです。気安く体を触ることは難しいはずです。ならば力ずくでも触りに行くしかありません。それがパンチやキックなどの戦闘動作となって表れているのです。

 

第二に、対象を強打することによって表面の弾性や、場合によっては内部の様子も知ることができます。優しくそっと触っただけでは、その表面がどのくらいの強さで凹むのかが分かりません。また、柔らかそうな部分に強めのパンチをしたのに中に固そうな手ごたえがあった場合、「オッ、コイツ見た目はフニャフニャだけど中の組織はかなり頑丈なんじゃないか」というように分かります。また、相手の体表が強い衝撃に反応して瞬間的に固くなる防弾チョッキのような性質を持っている場合にも、気づくことができます。

 

第三に、相手の運動能力を知ることができます。敵を倒すのに最適な光線の成分が決まっていざ発射したところで、実は相手がかなりすばしっこいヤツであっさりかわされてしまった、となったら大変です。そこで、相手の敏捷性などをチェックするためにパンチやキックなどの相手に体を激しく動かす必要を生じさせる動作を繰り出しているのです。

 

ウルトラマンが時間いっぱいまで戦っている理由も説明できます。相手の体表がもし時間によって変化する性質を持っていたらどうでしょう。せっかくの光線も変化した相手の体表に弾かれてしまってパーになるかもしれません。一度接触してからさらに時間を空けて接触することで、自らの解析に間違いがないことを確かめる必要があります。

 

また、今まで戦ってきた敵が実は悪いやつではなく倒す必要がないことが、戦っているうちに判明することもあるかもしれません。「その怪獣を殺さないで」と、その怪獣と仲の良かった少年がウルトラマンに訴えかけてくるケースもあります。なるべく時間をかけて怪獣や宇宙人の相手をすることで、倒す必要のないものを倒してしまうという悲劇を防ぐ効果もあるのです。これは敵に対して「執行猶予」を与える、ウルトラマンの優しさともとれます。

 

このように、「ウルトラマンは敵と戦闘動作を通して接触することで敵を倒すための光線の成分を決定している」と考えることでウルトラマンの変身後の行動について理解を深めることができます。ちなみに胸のタイマーが単に制限時間を示すものではなく、自身の残りエネルギーと光線の成分の決まり具合がちょうどいい塩梅になった「撃ちどき」を示すものと考えれば、点滅するまでの時間や点滅してからの時間にバラつきがあるのも納得がいくと思いませんか?

 

しかし、今したような説明を番組で毎回するのは長いので、「ウルトラマンは地球上で3分しか戦えない!胸のタイマーが鳴ったら必殺技でやっつけろ!」という趣旨の、子供にも分かりやすい説明がなされているのだと思います。

合格体験記

(1年前に書いた合格体験記に予想以上の反響があったため、いつでも見られるようにこのような形で残しておきます。以下本文です。)

【はじめに】
3年の秋に竸技プログラミングの大会があり、本格的に受験勉強を始めたのが11月と、とても遅いスタートを切りました。短期決戦を仕掛けたため余計な勉強はできず、ほぼ過去問だけの最短ルートだったと思います。この体験記が、これから受験を控える皆さんにとって微塵でも参考になれば嬉しいです。

【進路の決定】
1年生の頃は、初年次から専門分野を学べる東京工業大学を志望していました。しかし、東京大学が、総合大学で幅広い分野の先生が揃っていること、そして何よりも各種科学オリンピックで知り合った仲間たちがことごとく志望していることから、東京大学を受験することにしました。

【学習法】
国語…予習に丁寧に取り組み、集中して授業を聞き、真面目に課題をやっていました。周りにはサボっている人も多かったようですが、自分は苦手意識が取れず、かつ先生が怖いという理由もあって比較的真面目に取り組みました。古文漢文は文法や句形などの基本を早いうち、できれば1年生のうちに固めるべきです。現代文の添削について、本格的に添削をお願いしたのはセンター試験後からですが、自分の答案に対して先生から一つずつアドバイスを受けられるので、とても良い機会でした。添削を出すたびに答案のマルが増えていくのも、モチベーション維持に一役買いました。

数学…校内では得意な方でした。数学が好きで数学部員だったこともあり、1年生のうちに頑張って数学Ⅲの教科書を大体終えました。授業でまだ扱っていなかった分野の演習は教科書の練習問題→1対1例題の順で解いていました。2年生中盤からは、課題はやらず、授業は大事そうな部分だけ聞き、前述の1対1や月刊「大学への数学」の「学力コンテスト」の問題を解いていました。青チャートなどの網羅系参考書は好きになれず、1年生の頃を除いてほとんど取り組みませんでした。これが災いして、ごく稀にテストで典型問題が解けないということがありましたが、このスタイルで楽しく数学と向き合えていたので良しとしました。
数学を考えるときは字を大きく書きました。数学では定積分や数列の計算など小さな添字を多用するため、書く字は大きければ大きいほど良いと思っていて、積分1つにノート1ページを使っていたときもありました。また、自信がないときは勝手に字が小さくなるので、自分で自分を見ていて面白いです。
受験勉強においては、東京大学は年々易化傾向にあったため、「過去問のA,B問題ばかりを演習する」という戦略を立てました。また、確率や複素数平面などの苦手意識のある分野に関しては、先生に問題を選んでもらい、それを解いて頭を作りました。過去問添削が始まってからは、先生方に年度ごとに見ていただけるので、「制限時間内で解ける問題を見定めて確実に解く」という方向性で取り組みました。

英語…1年生の頃は予習、授業、課題、小テストに一生懸命取り組みました。「1年生のうちに英語の基礎力をつけろ」とはよく言われますがこれは本当で、2,3年生での英語学習を効果的に進められます。3年生になると部活動が忙しくなり、予習と小テストと課題を疎かにしましたが、授業だけはしっかり聞いていました。授業大事です。
東京大学の英語は時間との闘いのようなところがあり、120分で120点満点なので、基本1分に1点のペースで解いていきます。解く順番も人によって色々いじるみたいです。リスニングが苦手で、センター演習で何とかしようとしましたが、何とかなったようでどうにもなりませんでした。やはり日頃から英語を聞く習慣をつけておくべきでした。東京大学のリスニングは自分にはとても難しいものがあり、半分を超えれば良し、と割り切っていました。読解も苦手で、要約、段落整序、長文では苦労しました。二次試験直前の1週間で、思い立って要約問題だけを十数年分解いたところ、要約文と読解力がマシになった気がします。自由英作文は好きでした。書きたい内容を英語にしやすい日本語に置き換える作業にパズルのような楽しさがありました。中学3年生でもわかるような簡単な英語を念頭におくと書きやすいと思います。無理して難しい単語を入れようとしたり、複雑な構文を使おうとしたりする必要はないはずです。

物理…1年生の頃はなぜか物理基礎が全くできず、体育、現代文と並ぶ3大苦手教科でした。それでも1年間テスト期間などを利用し地道に課題をこなしてきた結果、2年生では良いスタートを切ることができました。それからは授業とテストの課題を中心に学習していました。課題は1周だけやっていました。結局「名門の森」などの有名参考書は買わず、教科書、センサー、たまに重要問題集でなんとかなりました。物理の問題を解くときは、どんな問題であれノートにページの半分が埋まるほどの巨大な図を描きました。計算式も数学と同様大きく書きました。それがよかったのかどうなのか、物理は得意教科になりました。
ところが、2年生の3月に「科学の甲子園」に参加したところ、物理の難しい筆記問題に手も足も出ず、非常に悔しい思いをしました。そのうえ、国際物理オリンピックの連続金メダリストに圧倒的な物理力を見せつけられ、劣等感に苦しみました。そこで、彼らに少しでも追いつこうと、「物理チャレンジ独習ガイド」という参考書で微積分の言葉で物理を学び直しました。さらに3年生の夏休みには「200 Puzzling Physics Problems」という洋書の問題集を1周し、8月末に参加する物理チャレンジ本選の過去問にも数年分取り組みました。結果、物理が大好きになり、今に至っています。彼らにはまだまだ到底及ぶものではありませんが、物理の理解も深まり、実力もある程度ついたと思っています。物理の発展的な内容に触れたい人には、あくまで一例ですがこのような勉強法を強くお勧めします。
受験勉強においては、過去問添削に取り組みました。東京大学の物理は比較的簡単だとは言われていますが、実際は制限時間やミスとの闘いであり、かなり苦しいものがありました。「東京大学の物理は解きごたえがあって楽しい」などという御仁もいらっしゃるようですが、夏休みにやった物理の方がよっぽど楽しく、受験物理ははっきり言って大嫌いです。皆さんには受験物理のせいで物理そのものまで嫌いにならないでほしいです。

化学…物理の方が好きだったため、化学の課題にはほとんど取り組んでいませんでした。そのため化学は苦手でした。しかし冬休みに教科書で無機を覚え始めると、今まであてずっぽうだったイオンや沈殿の色の問題がわかるようになり、「やればできるじゃん」という認識を得ました。それがきっかけで他の分野にも手を出すようになり、少しずつ解ける問題が増えていきました。過去問添削が始まると、先生が自分の答案用紙を見ながら一問一問について解説やアドバイスをして下さるため、非常にためになりました。理論化学など最後の最後まで難しいと感じていましたが、添削指導のおかげで物理と比べても遜色のないくらいの点数を取れるようになりました。無機分野に関しては、添削の先生に「化学の新研究」を一読するよう勧められました。新研究からは複雑な思考をショートカットできるような知識が多く得られ、役に立ちました。

地理…授業を聞いていました。課題はやったりやらなかったりしました。案の定点数が良くなく、マーク模試の点数も伸び悩んでいましたが、冬休みに5回分のセンター問題集を1周したのが良く、9割前後で安定した点数を取れるようになりました。自己採点をして解説を読むと、自分の知らなかった知識に数多く出会います。それを、くだらんと思うことでも余さずA3の紙に全て書き留めておきました。1回分で一面が埋まるほどの量でしたが、その知識がそのまま次の演習で活きるのでみるみる点数が上がりました。直前のたたき上げにはおすすめの方法です。
また、純粋な興味から2年生のときに地学を独学しました。地学と地理は2,3割が共通していると言われています。特にプレートや地震、気象や海流の話については、地理でやるよりも深い理解を得られるので良いですが、センター試験の点数に直接結びつくかと言われると、そこまで重要でもないようです。結論として、普通に地理をやれば大丈夫です。

センター試験
マーク模試で安定して9割前後を維持できていたため、本格的にセンター対策を始めたのは冬休みと遅めです。苦手な国語と地理と化学を中心に過去問や予想問題で演習しました。数学と物理は記述型問題を解き続けました。当日は、会場が学校の教室のような環境だったためかあまり緊張せず、落ち着いて受験することができました。試験官も優しそうな方で、たまに笑顔を見せるなどしていて幾分安心しました。休憩中も同じ学校の人と弁当を食べてリラックスできました。

【個別試験】
対策は上述の通り過去問添削が中心です。過去問を解くときは、なるべく本番と同じ解答用紙に、そして必ず時間を計って解きました。特に東京大学は、国語の記述解答欄の1行に2行書いてはならず、理科も解答欄を自分でレイアウトしなければならないなど、慣れが必要です。数学でも、記述できるスペースは決まっており、そこに収めなければなりません。そのため国語と理系教科についてはノートを一切作らず、すべて解答用紙のコピーに書いていました。時間を計るのは言うまでもありませんが、集中して取り組むためにも良い方法だと思います。
本番では2日前の夕方に東京に着き、前日の朝に本番と同じ時間で下見をしました。ホテルは、会場に近いところを1年前から予約してありました。当日は正門の人混みを避けて2日間とも裏の門から入りましたが、これが非常に空いていて、普段高校に通うようなのんびりとした雰囲気のなか試験場に入ることができました。これは極秘情報ですが、龍岡門入ってすぐ右のローソン店内の左奥には小さなイートイン・スペースがあり、そこで座って勉強することができます。静かで暖房も効いており、正門前の寒い喧騒よりも圧倒的に良い環境で最後の見直しができ、周りの受験生と差をつけられます。それもあってか本番は始終落ち着いて受験することができました。また、昼休みには安田講堂の前で各種科学オリンピックなどで知り合った仲間たちや、Twitterのフォロワーさんたちとエンカウントし、談笑、記念撮影など楽しい時間を過ごすことができました。試験本番は非日常的な体験であり、そうであるならば楽しむことができます。周りの雰囲気に流されずに「本番は楽しい!」と思うことができれば、受かったも同然だと思います。

【終わりに】
受験で大事なのは「戦略」と「対策」です。愚直に勉強してはいけません。自分は何のどの部分が分からないか、苦手な分野はどこの何か、正確に自分の現状を把握することが大切です。例えば、大雑把に「この問題の解説わからーん」などと言っていてはいっこうに解決せず、「自分は解説の何行目のどこから分からなくなっているか」をまず知るべきなのです。そうして自分の現状を把握したら、それを改善するには何ができるか、どうしたら良いか戦略を練ることです。これは先生方に聞くのがベストだと思います。戦略を与えてくれる先生方がいらっしゃる環境が進学校の強みの一つだと思います。戦略が立ったら、それに基づいて対策するだけです。辛いときもあるでしょうが、地道にコツコツやることです。「俺/私は絶対〇〇大学に合格するんだ!!」という燃えるような熱い思いは必ずしも必要ありません。焦らず淡々と努力するだけです。受験勉強が「時間内に答案用紙という名の書類を作成する作業」のように思えてくるくらい地味にやってもらって構いません。諦めず、最後まで無理なく勉強を続けましょう。
最後になりますが、皆さんが各々の目標に向かって努力され、見事達成されることを願ってこの体験記を締めくくります。健闘を祈ります。ありがとうございました。