日々drdrする人のメモ

今日もdrdr、明日もdrdr

DDCC2016本戦に参加した話

12/3に行われたDDCC2016本戦の参加記です。
japan.discovery.com

予選の話 (2016/11/05)

DISCO presents ディスカバリーチャンネル コードコンテスト2016 予選 - DISCO presents ディスカバリーチャンネル コードコンテスト2016 予選 | AtCoder
予選の結果、63位になりました。
決勝への参加資格のうちの18卒の80人枠に入れたので決勝へ進むことができました。

コンテスト前

当日は9時半前ぐらいに会場に着きました。
会場では、ステッカーと青いTシャツをもらい、先着だった電源獲得に成功しました(先着30名?だった)

デフォルトのネットワークが5GHzだったけどPCが対応してなかったので、2.4GHzの方でつなぎました。
(オンサイトでこの問題によく会うのでやっぱり5GHzに対応させたほうがいいのかなと思ったり思わなかったりしてる)

コンテスト

コンテストは2時間5問でした。
DISCO presents ディスカバリーチャンネル コードコンテスト2016 本戦 - DISCO presents ディスカバリーチャンネル コードコンテスト2016 本戦 | AtCoder

実装は全てPythonで行いました。

以下、コンテスト中の流れ

  • A問題: 円の中に含まれる正方形を、円の右上1/4に含まれる正方形の右上頂点の個数を数えて4倍したら通った。(00:03)
  • B問題: 問題に既視感あって、一瞬予選と同じ問題かと思った。部分点を狙って、 {i} {N-i}のペアで切っていったらよさそうだと思ったら取れた。(00:15)
  • C問題: とりあえず部分点を狙った。dfs(<文字列>)で実装。そのままだとループしてしまう置換の扱いで少しバグらせたりした(1WA)けどなんとか取れた。(00:30)
  • B問題: 戻って満点狙い。色々考察したら、最終的に位置 {i}によって {i} {N-i}のペアと、 {i} {i+m}のペアに分けて切っていけばうまくいきそうなことに気付き通せた。(00:54)
  • C問題: 満点を狙って色々悩んだけど、左から追加する分と右から追加する分に分ければ良さそうなことに気付いた。累積和を利用し区切った左側と右側で置換する回数を計算して、文字の区切る位置をずらしながらコストを計算して最小値を計算した。累積和から置換回数の計算する時の境界でバグらせた(2WA)けど、なんとか通せた。(01:21)
  • D問題: 問題文読んで、とりあえずDPっぽいなって思ってた。洗う回数をずらしながらDPする {O(N*max_i(A_i)*M)}ができそうだなーって思ったけど、 {M}がでかすぎて無理なことに気付くなどしてたら終わった。(02:00)

結果としては3完、1700点とまあまあという感じでした。
また、B問題,C問題の部分点を解いたけど、結局満点が取れてしまったので、部分点を狙わずに順番に満点を狙っていけばよかったなって感じでした。

順位は終了30分前の24位の状態で凍結されて最後の懇親会までわからなかったけど、結果は一つ落ちて25位でした。
f:id:smijake3:20161204002834p:plain

コンテスト後

コンテストの後は昼食を食べてました。ビュッフェ形式で🍣や🍖などが置いてありました。


他にも🍰やチョコレートフォンデュがありました。
f:id:smijake3:20161204014608j:plain


昼食後は厚切りジェイソンによる特別講演がありました。
ネタを交えた面白い講演でした。米国と日本の仕事における違いや厚切りジェイソン自身の経験、などについて聞くことができました。


その後は、ディスコの会社紹介を聞き、社内の施設などを見せて頂ける社内ツアーに参加しました。社内ツアーの中で、実際にウェーハをデュアルカットしているところを見ることができました。本当にデュアルカットが(B問題解法の)デュアルカットでした。


そして、施設としてジムやプールがあったりして、充実している様子でした。


最後の懇親会では、少し食事🍖🍞が出ました。🍺もありました。
f:id:smijake3:20161204014612j:plain
DDCCケーキ🎂もありました。
f:id:smijake3:20161204014615j:plain

感想

コンテストも楽しくて、おいしい🍣🍖も食べれたのでよいイベントでした。
また、あまり知らなかったディスコについて知ることができて、特別講演でよい話を聞けたのも良かったです。