ガナリヤの付録

学会や参加記のみをまとめています (それ以外は他サイトです)

ICPC 2020 Asia Yokohama Regional 参加記

はじめに

ICPC 2020 Asia Yokohama Regional (3/16, 3/17)にチームpotetisenseiで参加しました。
メンバーはlatteさん、koyamasoさん、ganariyaです。

ぼくは全体を通して、オンサイトじゃないのでお茶を組むこともできず、椅子を温めていました...

前日譚

僕はそもそも外部の大学から来ているので、これまでの大学のチームメンバーと別になりました。
これまでは同じゲームプログラミングサークルのメンバーと出ていました。(コロナが収束して地元に帰れたら会いたいですね... (一方向性))

新しくこちらに来ているので、必然的にganariyaが余りました。
koyamasoさんも学年の観点から余ったらしく(去年まで一緒にやっていた人が競プロを休んでいたらしい?)、2人にもう1人合わせるために徴収されたのがlatteさんらしいです。(申し訳ないです...)

当日

09:00時にスタートしました。
オンサイトと比べるとやはりのほほんと始まってしまいますね。(カウントダウンとかがないので)

ganariyaがA, koyasamoさんがBを担当しました。
latteさんがC以降を解いていくという振り分けです。

ここで、ganariyaですがAの実装につまりました。
こういう添字を合わせるなどの少し込み入ったものが苦手でした。

その間にkoyamasoさんがBを通し、latteさんがGを通しました。(すごいなぁと思うばかり)

Aに関して読み終わったらganariyaと相談しよ〜とSlackでkoyamasoさんに投げたら、すぐにAを通してくれました(Slackを開いていなかったらしい)。
考察力とかこういう込み入った系の理解がkoyamasoさん早い〜になりました。

ここまでganariyaなにもできず....

その後色々あってJの解法をlatteさんにアドバイスもらって、実装をganariyaが担当しました。
結果バグを出しながらACできました。ganariyaはこれ以降出てきません。

その間latteさんが複数問スラスラっと通しててレッドコーダーって何もかも違うんだなぁと感じました。

ぼくがJやっている間に、koyamasoさんがEを詰めていました。 ただ、WAが出るらしく、おそらく浮動小数点誤差が原因そう...という結論になりました。

その後、他にも通していたlatteさんが戻ってきて、Eのacosがやばそうというお話になりました。
koyamasoさんとlatteさんでacos -> sin, asinにできるよたいな話をしていました。
ganariyaは正弦定理も余弦定理もあまり覚えていないので何を言っているんだろうになっていました。
ここらへんの中高数学が抜け始めてきているのなんとかしたいですね...

その間、誤差がやばそうになったらやばいので、Pythonに移植を始めていました。
Decimal使えば精度の問題がなんとかなる...?と考えていたためです。
Decimalに関する桁を保証したacosの実装がないやんけ〜になりました。(それはそうで、そもそもcos, acosが近似してるんだから保証しづらい) ただ、公式サイトにcosのDecimal実装はあったので、acosもできるかな〜とNVIDIAだったかのサイトでacosの実装を見て移してたら、Eをkoyamasoさんが通してました。(すごすぎます)

その後、latteさんがKは面倒な文字列DPといって、面倒といいながら実装してACしてました。
脳の作りが違いそう....

その後はきつそうな問題しかないねという話になり、5時間を迎えました。
Gatherは頭が痛かったので、かなり早い段階で抜けました。

感想

latteさんもkoyamasoさんも考察力も実装力もすごい〜と感じる5時間でした。 一緒のチームを組んでいただいて本当にありがとうございます。
最後のICPCでしたが、すごい経験ができました....

強い人と一緒に考察やコーディングをすると、そもそも何かしら脳の構造とか考え方が違うなぁって改めて思いました。
青の次である、黄色とかになるにはこのような考察力と実装力、数学力が必要なのだなぁと...

ganariyaは黄色に年内になりたいなぁと思いましたが、青の1750付近停滞しており、ここから先はかなり厳しいだろうなぁと感じています。
というのは、このような考察力や実装力はかなり小さい頃から鍛えないとなかなか伸びないなと.... 黄色になることを諦めずにこれからも競プロをやっていきますが(なにより楽しいので)、これからの方向性をかなり考えさせられる機会となりました。

競技プログラミングのみではなく、アプリなどの開発や、チームでのPMなど、他の部分を重点的に伸ばしていきたいなぁと思います。
開発が最近とても楽しいので、競プロの力を開発で、開発の力を競プロで活かせるようにしたいです。

ICPCもそうですが、競技プログラミングの大会やスポンサーの方々、カンファレンス、インターンなどなど多くの方々に助けられて、B3~M1の間に楽しい経験がいっぱいできたので、来年の社会人では今度は自分が提供できるようにがんばりたいなぁと思います。

次はDDCC2021本戦かつオンサイトなので、がんばりたいです。
が、そのあとに国際学会への投稿があるので、研究をしないとですね... (やだ〜...)

ps

研究が辛くて猫の動画をいっぱい見ています。
猫とふれあいたいです。
実家に帰って猫を触りたいなぁ....

www.youtube.com

技育祭 Day3 参加記

Day3

CTOが語る、学生が個人開発で イケてる成果物を作るコツ

まずは小さく初めて公開する. そして,少しずつUI/UXや品質を向上させていく.

小さく始める

多くの場合,なかなかソフトウェアを作らない. きちんと紙の上で考案し,良いものにしていく.

そこで,模倣する. 重要な箇所だけに注力できる.

夢を見すぎる,難しいものは無理. 極力抑えてはじめる.

Incremental Developmentをおこなう

部品に注力せず,「全体」を捉えて,目的を達成できる最小限の構成に抑える. とくかく動かそう!そして公開しよう!

GitHub IssueやKanbanなどで,ちゃんと機能の優先順位を立てよう.

苦手なことをかなり最初のほうにやったほうがいい.

感想

自分でもアプリを作ることがあるけれど,かなり大きな夢を見て挫折をすることが多い. まずは,「本当に必要な機能」だけをできるだけ小さな技術で作り公開することを大切にしよう...

ただし,「基本」はそれでは身につかないことがあるので それは別途理解する必要がある.