Code Thanks Festival A日程に参加してきた
ブログではほとんど戦利品しか載せていないのでそれ以外のことも書こう、ということでこの前のCode Thanks Festival A日程のオンサイトに参加してきた話を書いておこうと思います。
私はCode Festival 予選Aで300点だったので、Code Thanks Festivalに参加する権利がありました。オンサイトコンテストに出る機会はそんなになさそうだし飯が出そうだし適当に参加してみようかな、と思って参加してきました。
ーー コンテストが始まるまでの話 ーー
会場はテレコムセンターでした。りんかい線で東京テレポートまで行った後、徒歩で会場に向かいました。最初適当に歩いてお台場方面に行きかけた話は内緒です。
会場に到着して受付を済ました後、Tシャツと焼肉弁当をゲット。焼肉弁当は開会式を聞きながら食べていました。おいしかったです。
食べました pic.twitter.com/jCHUJugjnr
— やけぬる (@jken_ull) 2014, 12月 7
コンテストはUbuntuで参加しました。何故か無線で繋がらなかったので、有線での参加になりました。なんか周りはMacが多かった気がします(・_・;)
ーーコンテスト中の話ーー
問題は8問で、レベルはそこまで難しくないような内容(AtCoderのABCみたいな感じ?)でした。
A : カメツル算
入力受け取って値を計算して出力するだけ。Pythonで提出欄に直接入力して提出。
B : バッジ
少し悩んで、大きい方からやっていけばいけるかなと思ってソートした。
C : コンテスト
問題の中から解けた問題の点数をただ足していくだけ。
D : 定期券
すべての場合を綺麗にまとめる方法ないかなーと考えたけど、結局考えるのが面倒になってすべての場合を分けて処理。場合分けし忘れたものがあって1回WAを出したけど、すぐに直してAC。
E : 儀式
この問題を読んだ時、AtCoderのどこかの問題で操作が可換であることを利用できる問題があったことを思い出す*1。すべての手順を一度行って、それから各手順について逆の操作を行うことで忘れた手順かどうかを判定。
F : 順位表
有向グラフで終点がないものから順番に見ていけばいいのかな、などといろいろ考えていたら、BFSで自分より上の順位の参加者を数えて、それに+1したものを出力すればいいことに気づいた。
ここまで6問を順番にACした時点で54分程度、順位は3、4位だったので、この調子でいけば良い順位になりそうだと思っていましたが、問題は次のG問題でした。
G : 通勤電車と気分
この問題はDPで解けそうだなと思って悩んでいたが思いつかなかったため、とりあえずDFSで探索する解法をSubmitするがWAに。
何が原因か特定できなかったので、DP解法を見つけるしかないと思って解法を考える。しばらく考えていたところ、N人座った状態で席が左からL個埋まっていて一番右に座っている人の席が左からR個目として、dp[N][L][R]とすると求められそうなことに気づく。終了まで残り5分のところで書き終わり、SubmitするがこれもWAに。
G問題が通らない原因がよく分からないまま終了して、6完の600点。順位はずるずる落ちて10位になりました。
後日G問題のWAの原因を調べてみたら、coutの桁精度の問題でした。printfで桁を指定して出力していたら両方ともOKでした。デフォルトのcoutの桁精度が悪いことを思いっきし忘れてました...。
G問題が通っていれば高級焼肉(4位くらい)だったと思うので残念でした。まあ10位でぎりぎり焼肉だったのでよかったです。
また、5完以上だったのでトートバックをゲットしました。
コンテストの後はchokudaiさんの生解説を聞いて、その後アンケートに答えました。
ーーコンテスト後の懇親会ーー
コンテスト後の懇親会には、寿司、ピザなどいろんな食べ物が並んでいました。私は寿司ばっかり食べていました。他にも太鼓の達人やDDRが置いてあったり、書道コーディングができたりとCode Festivalにあったものの一部を再現している感じでした。
懇親会が終わってCode Thanks Festivalが終わった後、そのまま家へと帰りました。
今回は初めてのオンサイトコンテストでしたが楽しかったです。またこういう機会があれば参加してみたいと思います。