鯰の住処

Namazuが真面目な話を書きます

ICPC 2019国内予選参加記

7/12 (金) に開催されたICPC 2019国内予選に参加してきました.

チーム

P IS NPというチームで出てきました. チームメンバーは,

の三人です. 全員AtCoderのレートは水色です.

同じくらいのレートで組めたら楽しいよねって感じで私が二人を誘いました.

結果

  • 全体で58位/458チーム
  • 東工大内で7位/22チーム

でした!!

f:id:blondenamazu:20190715225902p:plain

自分たちの実力を鑑みればかなり力を出し切れた方だと思います.

順位表を見ると,今回は3完のチームが100チーム以上あったみたいですね.ミスもなく,実装も早く出来たという点で満足しています.

戦略

言語は私がC++,ぱるまとPolyがKotlinでした. ICPCのルールでは事前にソースコードを準備してはいけないため,私がC++用のテンプレートを書き始めるところからスタートしました.

問題の解き方については,B問題以降はなるべく全員で考察してノーミスを目指しました.

また,私は実装にそこそこ自信があったので主に実装を担当することにしました.

私たちの実際の競技中の立ち回りは以下の通りでした.

  • Namazuが印刷してきたC++のテンプレートを写経開始.同時に,ぱるまとPolyがA問題を考察開始
  • ぱるまとPolyがA問題の解法を確認した後,Polyが印刷された問題文をもらいに行く.
  • Namazuの写経が終わり,ぱるまに言われるままにA問題を実装開始.
  • Polyが印刷された問題文を手に帰還.PolyがB問題を考察し始める.
  • A問題をAC (7:12).
  • Polyが「自明」と言いつつB問題の解法をNamazu,ぱるまと共有.問題無さそうだったのでNamazuがB問題を続けて実装し,ぱるまとPolyはC問題を考察することに
  • B問題をAC (17:26).
  • ぱるまとPolyのC問題考察がほぼ終了したらしく,ぱるまにC問題の実装を任せてNamazuとPolyがD問題を考察開始.
  • C問題をAC (1:04:53).
  • D問題が分からない.ぱるまも含めて考察をするが,解法が生えない.
  • 残り一時間の時点でPolyが「E問題は実装重いけどやるだけだからやれ」と言ってきたので珈琲飲んで気合いを入れて*1NamazuがE問題実装開始.
  • Namazu,先ほど飲んだ珈琲のせいでトイレに行きたくなりつつE問題を実装するが辛くなってきてギブアップ.
  • Polyが「多分嘘解法だけど一旦Dを実装して」というのでNamazuがDの実装を始める.
  • 実装したDを投げる.当然WA.
  • 絶望感に包まれながら競技終了.Namazuはトイレに行く.

このような感じで大体うまく分担して回せていたと思います.

反省

DのDP解法は頑張って思いつきたかった気がします. 実装したのは左から順番に決めていくみたいな手法だったので,その決め方をもう少し賢く出来れば…

Eは気合いが足りなかったと反省しています.

さいごに

チームで競プロやるのめっちゃ楽しいですね. 今回を持って私はICPCの出場権を失いますが,もっと前からこの楽しさに気づいておけば…なんて思ってしまいます. これからも競プロは続けていくつもりなので,その中でまたチームを組んで出られる機会があれば挑戦したいですね.

以上,ICPC参加記でした.

蛇足

P IS NPチーム名はメンバー三人の頭文字であるP,N,PからP≠NP問題を絡めることとBaba Is Youネタで作りました. 本当はeiyatonariみたいな感じでチームメンバーの名前を上手く組み合わせたかったのですが,私が考えた案が悉くpolyにダメ出しされ,ぱるまも凄く気を遣って無理やりフォロー入れてくれるような感じだったのでボツにしました.

参考文献:ダメ出しに容赦がないPoly

悔しかったので客観的な意見を聞いてみようと思い,(誰の案かは伏せて)不採用になった案でアンケート取ってみました.

それぞれの発案者は以下の通りです.

  • Npp:Poly案
  • ParNaPoly:Namazu
  • PolyNaruma:Namazu

対戦ありがとうございました.

*1:ごちうさ二期第6羽参考

最近,競技プログラミングが楽しい

こんにちは,Namazuです. 最近私は競技プログラミングにハマっています. この記事は現状を簡単に書くだけですが,競プロカテゴリを作って時々知見をまとめておきたいななどと考えています.

AtCoder

f:id:blondenamazu:20190613231024p:plain

現在主にAtCoderのコンテストに参加しています. ユーザーページはこちらです. 現在は水色レートの中盤近くです.今年中に青色レートになれたら良いな…などと考えています.

今年5月からABCの問題数が増えましたが,未だにE,F問題がコンテスト中に解けていません. まずはそこからですね…

Google Code Jam 2019

皆参加していると聞いて参加してみました.

  • Round 1A:無回答(恥ずかしながら回答できず)
  • Round 1B:2160th
  • Round 1C:985th (通過!)
  • Round 2 :2443th (惨敗!)

ギリギリでRound 2に進むことが出来ましたがRound 2は全然解けませんでした. 来年はRound 2でもう少しまともに戦えるように勉強したいと思います.

GitHub

こちらにテンプレートとかまとめています. 新しいアルゴリズム覚えたりすると多分増えていきます.

TypingWar

TypingWar

traPにおいて、チームで制作したリアルタイム通信対戦型のタイピングゲームです。

ブラウザゲームなので、こちらからすぐに遊べます。

概要

  • 人と対戦できるMultiモードとAIと対戦できるSingleモードがあります。
  • 1単語打つごとに相手に攻撃が入り、自軍の前線を押し上げます。
  • 語群は3つありますので、好きなものを打ってください。単語が長いほど攻撃力が高いです。
  • ノーミスで同じ語群の単語を5つ打つと、ボーナススキルが発動します。(詳細は以下
  • 相手を押し切るか、60秒経過時点でより前線を押していた方が勝ちです。

詳細なルール等はtraPの公式ブログに上げています。 trapti.tech

制作のお話

TypingWarプロジェクトには第一期、第二期があります。

第一期

この時はMultiモードのみで、Singleモードはありませんでした。

私はチームリーダー件デザイナーとして - ゲーム案の考案 - プロジェクトの運営・方針の決定 - デザインの考案・素材制作

等を行いました。 プログラムには全く触っていません。 当時はまだプログラミング勉強していなかったので…

第二期

この時期に以下の変更がを行いました。 - Singleモードの追加実装 - Twitter投稿機能の実装 - 語群の追加 - BGMの制作(一部をフリーBGMからtraPで制作したBGMへ

私が携わったのは上の三つです。 この時初めてTypingWarのプログラムに触りました。 SingleモードもほとんどMultiモードのコピペでしたが…

ブログ開設しました

f:id:blondenamazu:20170809002026p:plain

Namazuです。 東京工業大学デジタル創作同好会traPに所属しています。

個人的に技術的な話のアウトプットをする場が欲しくてブログを開設しました。 更新頻度は高くないかもしれませんが、よろしくお願いします。