ICPC国内模擬戦2019 Tech_ONS参加記

こにゃにゃちは〜〜
ひとまず色々と片付いて,色々と吹っ切れてきたガナリヤです.
将来設計がだいぶ怪しくなってまいりましたねこれは

最近,いろいろとVTuberといい,Twitterといい,ヒリつきすぎていて,嫌な情報社会になってきたなあって感じますね


さて,今回,TNPのメンバーからなる2チーム「Tech_ONS」と「team_YARUDAKE」がICPC国内模擬予選(https://jag-icpc.org/?2019%2FPractice%2F%E6%A8%A1%E6%93%AC%E5%9B%BD%E5%86%85%E4%BA%88%E9%81%B8)に参加したので,参加記をまとめておこうと思います(最近投稿も無かったので)


本番一時間前

研究室にこもって面接練習をしていたガナリヤは,ウキウキでTNP部室に向かいました,当たり前ですね
研究室はなんかジメジメしていて,お気持ちが下がるのでア

TNP部室には,すでにsiiiecとkurokuくんがいて,設営が始まってた感じでした

ちなみに僕の所属する四年チームはTech_ONSでganariya, siiiec, C_avaで構成されています.
二年,三年チームはteam_YARUDAKEで2年生二人と3年生d絵構成されています.

設営に取り掛かりましたが,色々な問題が発生してて終始ドタバタしていました.
具体的には

  • siiiecのパソコンが印刷機ようになりそうになり,自分のmacbookが候補になる
  • 自分のmacbookをディスプレイにつなぐケーブルがない
  • C_avaが到着し,Windowsをつけるも,Wifiになぜか繋げない(結局あれはなぜ?)
  • siiiecのパソコンをなんとか持ってくる(印刷機PCを別に用意した)
  • Visual Studioの設定がうんち(僕はよくわからないので,お気持ち担当していました)

多分,本番当日もグダグダになるので,早めに集まろうね!って思いました,反省

僕はこのグダグダというか,ドタバタしながらコーディングしたり考察するのがICPCの楽しいところなのかな?って気がしますね


デュエル開始!(14:00)

14:00からついに模擬戦が始まりました〜〜
長さは三時間で結構長いねって思うかもしれませんが,全然足りないんですよね(11問でるので,無理)

上記の問題文は(https://jag-icpc.org/?2019%2FPractice%2F%E6%A8%A1%E6%93%AC%E5%9B%BD%E5%86%85%E4%BA%88%E9%81%B8%2F%E5%95%8F%E9%A1%8C%E6%96%87%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88)

らお借りしました

僕は印刷係だったので,A・B問題を印刷
C_avaはテンプレートの写経地獄
siiiecはA問題の考察をしてました

A・B問題を印刷し終わったところ,siiiecはA問題の解法が生えたらしい 早い 僕いらなくないですか?

そんなこんなで,C_avaが設定してくれた(縁の下の力持ち)テンプレートで,siiiecがコーディング始める

見た感じ大丈夫そうだったので,僕はB問題に行く


B問題は毒の沼地っていうやつでした.

$100{\times}100$マスのうちに,通れるマスと,毒のあるマスがあります.
あなたは最初$(x_i, y_i)$に居ます.
そして,合計100回$(to_{x_i}, to_{y_j})$に順番に移動したいです.
このとき,毒のあるマスを通る回数を最小にしたいです.合計何回ですか?

みたいな問題です.

0-1BFSじゃ〜〜ん(やるだけか?)ってなり,一応考え直してから,僕0-1BFSの書き方知らないってなる(は?)

C_avaが圧縮しようとしていて,それはつらたんではってなる(ぶん回すのが国内戦だと正義なので)

結局仕方がないので,ダイクストラっぽいBFSで誤魔化す実装をすることにする.
なんとなく書いたところ,案の定プログラムが終わらない.

目grepすると,Q.pop()(priority_queueからポップをしてない)をしてない,これ何回目でしょうか

それを外すと,時間はかかるけどうまく動いているっぽいので,現代のCPUとメモリに感謝を捧げて,siiiecとC_avaが考えているC問題に移る

結局,A問題・B問題はAC出来ました


C問題にうつると,C_avaとsiiiecが唸ってた

C問題もグリッドの内容で
上下左右斜め好きな方向に1マス進むと,その1マス先に,廻小宮が生える.
その廻小宮の太刀筋の位置に入らないように繰り返し移動し,目的にまで行く場合最小回数は何回ですか?

みたいな問題.多分よくわからないと思うので問題文を読んでください

C_avaが図示して,説明してくれた.これ答えでは?

サンプルをみると,なんとなくX座標とY座標の絶対値の足し算に,+1か−1かそのまま,みたいな感じがある(優しいね)

僕は考えたくなかったので(こういう問題基本的に僕は解けない),とりあえず偶奇で分ける発想に三人で至る

すると大体の場合は上手くいくが,偶数と奇数のときに例外が発生する感じがある.(偶数が0のときと,0以外の偶数のとき)

とりあえずここで,偶奇以外は自分が実装しておいた

すると,C_avaとSiiiecから片方0ならこれ,そうでないならこの処理!みたいな指示が来たので,実装する,実装汚いね(反省します)

ICPCを信じて,お祈り提出をすると通る
テンション上がりますねこれは,これだからICPCやめらんねえんだよなこれ

二回目の提出も通る,嬉しい,サンプルのおかげ ありがとう全てにありがとう(藤岡弘)

ここで,大体一時間40分経過.ここから地獄のD問題が始まる


D問題は

編集距離のDP問題があるよね!
それに,もう一つの追加で回転(先頭の文字一個を文字列の末尾に持っていくよ)が追加されてるよ!
文字列$X$を文字列$Y$に変形するのにかかるコストを求めてね?

みたいな問題.

ここで発生した問題は,誰一人として編集距離覚えてないことなんですよね(笑い事ではない)

編集距離のアルゴリズムを覚えてないので,その場で自分が編集距離の解法を生やす
半年前の自分が勉強していたので,有能(忘れていたのはぐう無能)

編集距離のアルゴリズムは出たのはいいものの,回転をするDPがよくわからない.

C問題で味をしめた僕たちは,とりあえず回転の回数を全探索しようみたいになって,全探索してみる.

色々試すと,サンプルが合う
これだからICPCはやめらんねえんだよな〜って言いながらSubmitしたら,WAしました

そっからどうしてもD問題の解法が生えない
順位表見ても,また今年もC問題とD問題に大きな崖が出来ていて,やっぱり4完が必須なんだなって思った

C_avaとsiiiecはE問題に行ってしまう(基本的にD解けないときは,Eは絶対に解けないので,今回の国内予選は順位表を見ながらDに専念したい みんながEを解いてたらEに行く戦法を取りたい)

Eは,最大クリークに落とし込む問題だったみたいです,ライブラリ自体持ってないので(こんなん出してええんか?)

結局Dが解けないまま,三時間が経ちました,無情



結局そういうわけでTech_ONSはABCの3完で180チーム中51位でした.
4完が40チームあるのと,本番は500チームぐらいあるので,やはり4完しないと厳しい感じがします

残り時間もだいぶ短くなってきました.
もう一回アジア大会に出れるように,頑張ろうと思います
ガナリヤでした!

コメントを残す

Top