JAG夏合宿2017 参加記 part1

3日間泊まりで参加しました。

 

~遡ること一か月前~

院試の発表まだだけど家で落ち着いている気分じゃないし大阪旅行に行こう!

ということで、急遽ICPCチームメンバーのpolyominoと大阪旅行に行くことに。

大阪旅行2日目。

実家に帰っていたパチコ様(pachicobue)とUSJへ。フライングダイナソー考えた奴頭おかしい。コースター系多すぎてぐったりしました。

夕飯は前日夜量が少なすぎて失敗した串カツのリベンジ。その席でのこと。

ホハム(mtsd)「JAG夏合宿行こう!!!」

ICPCでのキャプテンhyksmは行かないとのことだったので、パチコ様を半ば強引にチームに誘ってその場で参加登録させました。めでたしめでたし。

 

~1か月後~

全然コード書いてない!!!!!やばい!!!!!

院試発表が終わってからというもののチームメンバー3人とも全然コーディングしていないということが発覚。

全員実装力が低いのでどうするどうするという話に。結局どうしようもないという結論で合宿日へ。

 

~1日目~

住建(smiken)と昼ごはんは代々木商店へ。懐かしい感じがしました。

その後オリセンへ。懐かしい感じがしました。

そんなこんなでチーム集合。まさかのパチコ様のみ宿泊しないことが発覚するなど。

パチコ様は1995年生まれなので、うちのチームIQ94じゃないじゃん!という話に。

じゃあIQ94.333333にしよう!としたが、Atcoderでは.(ドット)が使えません。。。

よってIQ_about_94ということになりました。

そして初めての5時間セットへ・・・。果たして手持ち無沙汰になってしまうのか・・・

 

Japan Alumni Group Summer Camp 2017 Day 1 - Japan Alumni Group Summer Camp 2017 Day 1 | AtCoder

 

配られたものをとりあえず分配することに。

 

とりあえずA問題を僕が見てこれは簡単!もう書いちゃうと宣言。

パチコ様はB問題を読む。

polyominoは僕にパソコンの使い方を教えながらそれ以降の問題を確認。

A問題 しりとり

n個の単語のしりとりの文字の総数の最小値を求める問題。

直観的にa→ab→b→...→z→za→(2文字のもの全て)→(3文字のもの全て)→...

でokと即決。あとの二人のコーナーケース大丈夫?って目線を受けながらもコーディングへ。

26^mを計算するのに電卓使いたいって言ったらpolyominoがpythonを起動してくれました。

AC (12:18)

そうしてる間にpolyominoから「これ数学だからやって」とパチコにC問題が投げられて、パチコが数学を解いていた(三角形の相似をわちゃわちゃやっていた)。

答えを出力する感じでAC(20:36)

このタイミングで順位表を見てみるとA問題がFAであることに気づく。おかしいなと思って表をよく見るとまだ見てすらいなかったJ問題クッパを他のチームが解きまくっていて、焦って問題文を読み始める。

J問題 クッパ

約数の和が98になるような正整数を全て求めよ。

こんなん算数やんけやるだけやるだけという気持ちになって、約数の和の公式を使って手計算。52が出てくる。52だ52だと伝えてtextで52を提出。WA。

あれれ???改行してないんじゃね???2WA

あ、97は素数!!!! AC (25:01)

はい。やらかしました。(適当にぶん投げていたけど、ペナルティが20分ということに後から気付いて後悔)

普通に回せばよかったのでは・・・

 

その後、各自がどの問題を解こうかと模索。とりあえず解けそう(他チームが解いてそうな問題)

mtsd H問題 イベルタル 

パチコ B問題 リス K問題 パンプキン

polyomino E問題 ベクトル式 F問題 部分文字列

あたりを考え始める。

僕はH問題をマス目を書いて最小値を埋め始める。

その間にパチコ様がK問題は和でソートすればいい!と主張。すぐに理解できず、マジ???ってなり、とりあえず書いてくれと言って書いてもらう。AC(48:54)

polyominoによるとEはやりたくない。Fはライブラリがない可能性があるので険しいかも。ということになり、とりあえずパターンが見えたHを定式化して倒しに行く。

僕が式を求めてその間にpolyominoがコードを書く。連携が上手く行った。AC(67:22)

 

ここからどれを解けばいいんだ~となる。
G問題は見るからにヤバそうだし全然通されてないので読みもせず。同様にI問題もパス。

C問題も数学っぽいけど全然通されてないし、FFTとかそういう類の匂いを感じスルー。

E問題は時間内に通せるか危険。残るはB問題リス、F問題極小部分列。

パチコがFは端から貪欲でよさそうと実装を始める。

その間にB問題をpolyominoと考え始める。

全員到着したときの順番が分かっていれば上手く行くか?

まずどうやってその配列を生成するか?

を考え始める。polyominoがこういうのはクエリを後ろから処理すればいいというのでその方向性で考える。すでに後から何番目までに何個埋まってるのかが分かってればよくない?という話になりこれ典型BITだよとpolyominoが指摘。じゃあ後半もBITで貪欲かよっしゃ解けた解けた!と喜ぶ。

 

 

F問題の方の実装が終わったというので、テストケースを実行するとなんかあってない。

部分文字列としてはあってるけど最短のものを出力できてないという話に。

適当に後ろからもう一回貪欲で回せばいいんじゃん?と言ってみたらそうっぽいなという話に。

実装したら上手く行ってそうなので投げる。AC(128:54)

 

後50分。B問題絶対通すぞ!という感じになる。

BITを蟻本から書き写す。ワチャワチャ実装。0-indexと1-indexで大混乱。35分くらいたってようやく動いたので提出。→WA

配列足りてないぞ!直せば通るだろ→半分くらい通るもWA

よく考えると後半は貪欲じゃない!と分かり、どうしよどうしよとなる。

パチコ様参戦。前からi番目にいるのが何番目に来たやつかは分かっていて、この番号が昇順になるように取っていけばいいんだけど・・・と伝えると、それただのLISやんと言われる。

あっそうじゃんとなり、また蟻本書き写し。ぎりぎりAC(174:58)

 

終了。7完。無駄ペナを積んでしまったけど、チーム的にはキャプテンを失った割にかなり上手く行って大満足。

 

パチコはそこそこ遠いのに宿泊なしで帰宅。あとの二人は今回単独参加の住建と一緒にダラダラ。あんまり他チームと交流できなかったのが残念。

 

 

 

ここまで書いていたのが2週間前。大分忘れてしまっていてpart2以降があるかはわかりません!part1完!