memo46

競プロの精進記録その他。

ICPC 国内予選2020 参加記

siro53, suta, kiyoshi0205の3人のメンバーでチームUHISHIROとして出ました。 f:id:bakamono1357:20201106230355p:plain

結果は 全体17位 / 学内1位 で国内予選突破、アジア予選進出です! 模擬国内では予選落ちの結果だったので、とても嬉しいです!

以下参加記です。

本番前

緊張で全く眠れず深夜4:30頃に就寝したためかなり睡眠不足を感じる。

12:30頃に大学に到着し、チームメイトとともにリハーサルを済ませる。

リハーサル全完したら昼飯を食うことになっていたが、kiyoshi0205が鎖中経路を通すのに苦労していて遅めの昼食になった(通していてすごい)。

本番前に再度必要なものが足りてるかどうかチェックをし、序盤担当することになっていたA問題を高速に通すイメトレをしながら、ついにICPC2020国内予選スタート...!

本番

F5を叩きコンテストページをリロードすると、

no status information for team 459743 in contest are found (database broken or not initialized?)

というメッセージが出る。え?え?え????なになになになにこれこれこれこれ

チームメイト3人とも問題が見れないようで、激焦りする。これが原因で予選敗退はかなり嫌なので、本部にメールを送信したり電話をかけたりしたが、繋がらない。どうやら全チームトラブってるらしい?

依然として混乱するが、kiyoshiが突然「(コンテストページ)開けた!!!」と言うので急いでF5を押すとなんかリハーサルの問題が表示されている(???)

ワクワクがすぎるが、とりあえずチームのうち1人がページの更新を確認しつつ僕がメールを確認し続けていたりもう一度電話したりしているとついに問題が見れるようになっているので急いで取り掛かる。

Aを見る、やるだけなので僕が通す

Bも簡単らしい、sutaがササッと通す

Dを読んでいると、Cを取り組んでいるkiyoshiから「え、ポラド・ロー?」とか聞こえてくる。不穏なので一旦kiyoshiに問題と解法を説明してもらうと途中で

「あ、にぶたんでいいじゃん」

と言い始める なんかよく分からんけど解けたらしい...

kiyoshiがめちゃくちゃ緊張してて手が震えており、バグらせていて傍から見ても精神状態がヤバそうなので、急いで駆けつけて後ろからコードを見て一緒にデバッグすると、幸いすぐに自明なバグが見つかりCが通る

このタイミングで順位表を見ると僅差で他の弊大学のライバルチーム(Ramen as a Service, Give us sociability...)に勝てており、D、Eが早く通せるかの勝負になると思ったので全力でD、Eに取り組むことにする。

Dは読むと構文解析で、とりあえず$n!$通り愚直に調べれば答えは出せるが、$n\leq 16$なので当然間に合わないのでどうしようとなる。構文解析が本質ではない問題っぽい

Eは数え上げ、ICPC国内予選で数え上げって珍しくないか?こういう問題は絶対kiyoshiにやってもらった方がいいんですね~とか思う

Eの問題概要をチームメイト2人に伝える。kiyoshiがパッと解法を出していたがオーダーがヤバいらしいのでダメそうとなる

Dはとりあえず変数の関係を書き出すとトーナメント表(木)になってるね~と言うけど特に進展はない。kiyoshiが「これは分配法則が成り立つ」とか言ってたけどその方針で突っ走るとどう考えてもヤバそうなので、別の解法があるんじゃないかと疑う

ここから暫く、Eをkiyoshiが1人で考察し、Dをsutaと2人で考察する流れになった

Eはkiyoshiがうんうん悩んでいて、Dを僕とsutaで取り掛かるも、本当に何も糸口が見えない このままD、Eをみんなに通されて終わってしまうのか・・・



かなり暗い雰囲気になりかけていたが、ここでsutaが「完全に煮詰まったからトイレ行ってくるわ」と言う



どうやら国内模擬の会津大学のbeetさんのチームの参加記のことを言ってるらしい(バグで完全にハマってしまったチームメイトに対しトイレに行ってもらって一旦リフレッシュしてもらうことで、思考がリセットされてバグが取れたという記述があった)



確かに今完全に煮詰まってるし俺も後でトイレ行こ~とか思う 結局構文解析しながらdpするのはつらいし、やっぱりSとTに対して最終的な結果を固定したいよね~とか考えてウンウン唸る

暫くするとトイレから帰ってきたsutaがトイレしてる間に考えてたことを伝えてくれるも、う~んとなる



次は僕がトイレに行く番なので、トイレに行く。(最終的な状態を固定した時、そいつの後ろにあるやつと前にあるやつはそれぞれ自由に並べ替えても結果は変わらなくね?それ構文解析しながら前と後ろにいなきゃおかしい文字を調べられないか?みたいなお気持ちをsutaに伝えると「え、かなりそれじゃないか?」みたいな話になる

ここから2人のテンションバク上がり

どのタイミングかは忘れてしまったが、kiyoshiもEの解法が思いついたらしい(実装が大変らしい)

ただ、なんか微妙に最後の数え上げパートで2人の意見が食い違う 色々話すがどうしても噛み合わない

(よくわからんけどこういう時はレートの高い方の意見が正しいやろ!w)と思い、sutaに実装をお願いすることにする 僕はどうして話が噛み合わなかったのかを再度考察し直す

暫く考えると、自分の考えてたことが微妙に嘘であり、bit全探索が必要であることに気づく 急いでsutaにそれを伝えると



「え、最初からそういう話じゃなかったの?」



どうやら自分の解法の伝え方が下手すぎて、逆に正しい解法としてsutaに解釈されてたらしい

なんだこのチーム 解法伝達が上手すぎるだろ・・・



完全にsutaの意見が正しかったしやっぱりratismなんだよなとか思う 少しバグるが、Dのサンプルが合う。発狂 Dが通る 最高

めちゃくちゃテンションが上っていると、Eの実装がかなりお通夜になってるっぽい

まだ逆転される可能性があるので油断はできない。解法は出てるしEを通せばほぼ勝ち確だと思い、3人全力でEのデバッグをする

Eの解法の説明を受けるが、僕もsutaもDで興奮しすぎて何も頭に入ってこない 何もわからないのでsutaと一緒に1行1行「これは正しい?」と質問攻めにする

kiyoshiは僕たちに説明してるうちに思考が整理されたらしく、落ち着いてゆっくりコードを修正する

全ての修正が終わってサンプルを試すと、サンプルが全て合う(!!!)

1ケース目が通った時は3人かなりうるさかった気がする。2ケース目も通り、無事5完! 3人でめちゃくちゃ喜びました

Fを3人で読むと、1010ならすぐ解ける問題っぽい?Fがめちゃくちゃ通されてるのはそれかな~とお話ししたり、Fの愚直の実装をしたりしているとコンテストが終了しました

感想

振り返ると、かなりチーム連携が上手くいったなと思いました。模擬国内の結果を見て通過できるかどうかかなり不安でしたが、チームメイトが心強くて本当に助かりました。

現状かなり自分のレートが停滞していて、チームメイトにすごくレートを離されているので、アジアまでにはなんとかしたいです。切実に・・・

アジアで恥ずかしい成績を取らないように、より一層精進したいと思います。

AOJ でのバチャの立て方メモ

意外と分かりづらい気がするので備忘録・・・

①AOJ Arenaを開く

画像の赤丸で示したところをクリックする f:id:bakamono1357:20201102182913p:plain

②Virtual → Coordinate

Virtualタブを選択した後、Coordinateを選択 f:id:bakamono1357:20201102183102p:plain

③情報を入力

  • ID,Title:自由につけてよいが、半角英大小文字数字アンダーバー等しか使えないと思うので注意、日本語はNG
  • Type:Virtualを選択
  • Policy:公開するかしないかを選択
  • Visible:0にするとArenaから見れなくなる、多分。基本1でいいはず
  • password:パスワードが設定できる(はず)
  • Start Date, End Date:バチャの開始時刻と終了時刻を設定
  • Informal link:よくわからず... なんかリンク貼れるのかな?無視してもとりあえず問題なし
  • Comment:コメント付けれる
  • StateAcceptedにすると予定通りバチャが始まる

すると、Arenaにバチャページが出現するのでトップページに飛ぶ

再度情報を編集する際はEDIT ARENAをクリックして編集

④問題を選択

MANAGE PROBLEMSをクリックする

こんな感じに入力する(雑) f:id:bakamono1357:20201102184008p:plain

IDはA問題B問題とかの名前を付けられる

Site Problem IDは、問題についてる個別の4桁のIDを入れる

f:id:bakamono1357:20201102184224p:plain
赤丸で示したIDをSite Problem IDに入力する

それ以外は特にいじる必要なし(本当?)

⑤バチャを始める

時間になったら「ぞい!」と言ってバチャを始める。

ICPC2020 模擬国内 参加記

ICPC2020模擬国内に参加した結果、全体39位/学内3位でした。

本番であれば予選落ちです・・・ 本当に悔しいです。 f:id:bakamono1357:20201025211204p:plain

今回はコンテスト中だけでなく、コンテスト前のムーブにも色々反省点があったので、本番で同じやらかしをしないために反省点を記録することにします。

~14:40(コンテスト開始前)

オンサイト(大学)で集まって参加することになっていた

ライブラリ印刷のために、tsutajさんのライブラリ印刷用ツール(これ使いやすくてとても便利です、ありがとうございます・・・が使えることを昨夜のうちに確認していたので、これを大学で印刷するために少し早め(12:00頃)に大学に着弾

ほどなくしてチームメイトのkiyoshi0205と合流して、早速研究室のプリンタをお借りしてライブラリの印刷を試みる

......

...............

shiro & kiyoshi「このプリンタどうやって使うの?(・∀・)」



そう!!!誰もプリンタの使い方を把握していなかったのである!!!!!!



情けないことに何もできないので、既に昼飯を食っていて後から来るsutaに全てを託し、コーチのyamadさんにプリンタの使い方をslackで聞きつつ、印刷するためのpdfを整理してkiyoshi0205と昼食を食べに行く

昼食を食べ終わって模擬国内をやる部屋に戻ってきたときには13:20ぐらいだった

まだプリンタ使えてないらしい。やばい

yamadさんが必死にヘルプをしてくださって、必死にプリンタと戦う。かなり絶望的な気持ちに...

結局ドライバのインストールだのなんだかんだやってると、なんかよくわからんけどプリンタが使えるようになった(???)

f:id:bakamono1357:20201025212525p:plain
13:52から印刷開始...

そうしててんやわんやの中、まだ印刷途中だけどコンテスト開始...

ここまでの反省点

  • 事前に家でライブラリは印刷しておく。
  • 15分前にはもう準備が完了していないと本番で焦る。

コンテスト本番

Aを僕が素早く通して、スクショしてないけどこの時点で全体7位で出だしは順調だった

sutaはBをやっていて、kiyoshiがCがわからないというので僕がCを請け負ってDをkiyoshiに任せる

ほどなくしてBが通る。Cが少し詰めきれないのでCをsutaと相談

ちょっと相談すると、見るのは左と上の辺だけでいいし、適切にコストを前計算すればdpで解けるねとなる ただスタートとゴールの位置関係が4通りあるのでちょっと面倒 位置関係を回転させる前処理を僕が書いておき、sutaがコスト前計算とdpパートを書くことにする(これは同時コーディングありならではの戦略ですね)

気づいたらDが通っている(???)

しばらくしてCのサンプルが合う。ニッコリしながら提出

Wrong Answer

上手い実装を選べたし結構自信があったので、かなり動揺した

とりあえずCが通らないとやばいのでCのデバッグ開始

しかし全然バグが見つからない、kiyoshiはEを読み始めてた

どうして間違ってるか全くわからない、僕はずっと提出するoutputファイルを間違えたことを疑っていてもう一度提出したい気持ちになっていた...

この時kiyoshiがEの解法を出し、実装を開始していた

しばらくCもEもバグってて、2つ炎上していたため大変なことになってしまう...

結局Cは嘘解法だったが少し修正するだけで直るので、sutaが直すとCorrect Answer とても安心したが残り20分しかない

結局デバッグが間に合わず、Eが通らないままコンテストが終了

コンテストの反省点

  • ライブラリの印刷であわててしまったため、SCCのライブラリを探すのに時間がかかった。ライブラリはジャンルごとに分けて、ホッチキス留めなどをして事前に整理するべき
  • 2人がかりでCの嘘に気づかないのはやばい
  • outputファイルを間違えて提出するとWAの原因が分からなくなるので、もっと慎重になる(今回は結局ミスなかったけど)
  • 3人で各々ライブラリを印刷したけど、1つにまとまってると探しやすくなると思った。(本番までにまとめる時間があるかというと...)
  • ライブラリはなるべく写経量が少なくなるような実装を選んでおくべき

なんにせよ、ほんと準備不足だったなぁと思いました。(まぁ模擬国内の結果にはあまり影響してないですが)

実装が炎上したら積極的に介入して鎮火すべきですが、2問もバグってたらどっちかしか複数人で対応できないので苦しいですね......

このままでは予選落ちなので、本番では巻き返せるように予選までに本当に頑張ります......(アジア行きたい...)

ACPC2020 参加記

day 1

別のことが忙しかったので欠席。

day 2

UHISHIRO(siro53, suta, kiyoshi0205)で出ました。

内容

  • ぼく「タイピングやるだけ」Aを通す。
  • その後すぐsutaがBを通す。
  • この間に僕がEを読んでいて、まぁDPでいけるんじゃね~みたいな感じのことをsutaに伝える。少し相談して解法が出る。
  • 少しした後にkiyoshi0205がCを通す。
  • 僕がEでDPを実装するがサンプル合わない。もう一度sutaに相談して少し考えると、嘘DPであることがわかりました。ごめんなさい...
  • 直してEが通る。
  • たしかこの間にkiyoshiがFを読んでて、「凸関数の和は凸だし三分探索やるだけでは?」って叫んでた。kiyoshiがFを書く。WAが出る。
  • 平坦な場所ができるとまずいので、それをsutaと相談してなんやかんやして通してた。僕は問題を全く知らず... その間にGを読む。
  • sutaがダイクストラしたいみたいなことを言ってたけど、愚直に辺を張ると最悪O(N2)本になるケースが作れてしまったのでどうしようとなる。
  • kiyoshiにも概要を説明して、Jを考察していたsutaに参加する。全く歯が立ちません...
  • しばらく考えていたけど全くわからん、といったところでkiyoshiがGを区間に辺を張るテクで解けたと主張。Lorentさんの記事を引っ張りだして実装を開始。その間にJを考えていたけどオーダーが落ちる気配がしない......
  • kiyoshiがGを提出するけどWA。なんで???となるがソートし忘れていたらしく、直すとAC
  • 残り5分でも粘ってJを考えていたけどわからずコンテスト終了ーーー。

結果・反省

6完19位

Eレベルのやつを人に相談するな、自分で通せ!!!

早解きできてればRamen as a Serviceに勝てたかもしれないため大反省(1位差だった)

Give usには勝てたらしい、kiyoshiのおかげ f:id:bakamono1357:20200922225726p:plain

day 3

昨日と同じくUHISHIROで出た

内容

  • Aを見て「面倒なbfsするやつか!?」と思って激焦りする
  • sutaがBを爆速で書いてAC、全体3位で草 すげえ
  • よく読むと簡単な場合分けするだけだった、kiyoshiがCを通した後Aをぱぱっと書いてAC ここまでの速度はかなり速かったと思う
  • kiyoshiがDを解いてて、僕がEの概要をsutaから聞く。kiyoshiがDがギャグらしいので書いてたけど落ちた。
  • 僕がsutaとEを詰める。実はmodを取る回数はそんなに多くないのでは、みたいなことを言っていると、今の数字よりも小さいかつ今見てるindexに最も近いindexを高速に探せればいいねとなり、これはセグ木でできそうとsutaが言うので書いて頂く。(実装方針がぱっと思い浮かばなかった)(カス)(ごめん)
  • kiyoshiがDを再考して実装して出すと落ちる。この間にsutaがEを書き、kiyoshiの解法を聞きながらDのデバッグをする。
  • 解法を聞いてると序盤で既にダメな箇所が見つかる。2人で笑いながら修正するとAC
  • sutaが書き上げるけど、僕が出したサンプルが通らない。kiyoshiが介入すると、実はもっと実装が楽になることがわかる。sutaが書き直してAC
  • この間にFをkiyoshiと詰めてた。添字とか細かいところでkiyoshiと食い違いがあったけど、僕が書いてAC。
  • 3人でGを考えてると、kiyoshiがbitDPを思いつくけどO(2m*m3)らしい、後にsutaが高速化を思いつき、2人で必死にデバッグしているところを僕は眺めていました...(かなり根本的なところで分かってなくて考察に参加できなかった、ちゃんとupsolveしました...)

結果

6完35位

僕に実力があればなア

チーム練で初めてdiscordの画面共有を使ってデバッグしたけど、めちゃくちゃ効率が良かったのでこれからも採用!w f:id:bakamono1357:20200922231031p:plain

反省・感想

  • 僕がチームに頼りすぎ(一人で解ける問題を増やしなさい)(実力不足)
  • AOJ-ICPCを埋める、知識をつける
  • これからチーム錬をもっとやる
  • 会津大学のみなさん、並びに作問陣のみなさん、AOJ運営の方々、楽しいコンテストをありがとうございました。

AtCoder 青になりました

f:id:bakamono1357:20200917121532p:plain

人生で初めてのABC全完でようやく青になれました。やったぜ。

お気持ち表明

個人的には入水してから大スランプに陥って緑落ちして、しばらく抜け出せなかった時が精神にかなりきました。

自分がなかなかレート上がらないときも周りの競プロerはどんどんレートを上げていくし、自分には向いてないんじゃないかなって思う時がかなりありました。

しかしGPAを1以上下げて授業中にも競プロやったりバチャやったりしたのに今更やめるわけにもいかないので踏ん張って続けることにしていたら、なんとかレートが上がるようになりました...(疲れた)

今思えばあの時期は完全にメンタルが終わっていて、それが成績に確実に影響していた気がします、競技プログラミングはメンタルゲーです本当に...

青になるまでに勉強したアルゴリズム

色変記事ではこの項目がよく書かれていますが、僕は色んなアルゴリズムを貪欲に学ぶのがレート急上昇に繋がるんじゃないか(本当に?)と心のどこかで思っているので書きません。これからも色んなアルゴリズムやデータ構造をどんどん貪欲に学んでいきたいです。

どれくらい精進したのか

自分は大量の精進を続けること、特に継続することがかなり苦手で、他の人に比べて精進ペースが遅いというコンプレックスがあります。これは黄色になるためには絶対に改善しなきゃいけないと思っています。

しかしまぁ惰性でそれなりに精進を続けてきたので、一応色々記録を載せておきたいと思います。

f:id:bakamono1357:20200917122819p:plain

f:id:bakamono1357:20200917122848p:plain

f:id:bakamono1357:20200917122913p:plain

f:id:bakamono1357:20200917122938p:plain

f:id:bakamono1357:20200917123059p:plain

思うのは、自分より成長の早い人は自分より沢山精進しているということです。それはsolve数が多いとかRPSが高いとかだけが指標ではなく、もっと本質的に自分より真剣に集中して長い時間競プロに取り組んでいる、尊敬できる方ばかりです。 そのような方を見習っていきたいです。

反省

自分は理解したつもりになることが多く、既出の問題が出ても理解が浅いために解けないことがありました。 スランプに陥ってる時にこれに気づき、復習を沢山したり、TLで見つけた青diffバチャに積極的に参加したりしました。これからはそのようなことがないように気をつけたいです。

最後に

これあんまり参考にならないんでは... 次の目標は黄色なので、まだまだ満足せずに頑張ります。

HUPC2020 参加記

3日間すべて参加しました。

1日目

今年ICPCで組む予定のチームUHISHIRO(suta siro53 kiyoshi0205)で出ました。

コンテスト内容

  • まず僕がAをさっと通す
  • sutaが「あ~これimos2回やるやつだ」と言いながら通す
  • この間、僕がDを読み終わり考え始める。sutaがEを読む
  • しばらくしてkiyoshi0205が「あ、Cギャグですね」といいながら1ペナで通す
  • Eを読み終わったsutaとDを考えると、なんかすべての点を通るようにうまく直線を引いた時に3つ以上あったら無理じゃねみたいな話になる。
  • kiyoshi0205もCを通した後に合流し、すべての点を通るように2つの直線をうまく引いたとき、2直線が平行じゃないとまずいねというところまで考察でき、後はその直線が引けるかどうかの判定をどうやって高速にやるかを詰めることになる。
  • しばらく議論するとkiyoshi0205が詰め切れたらしい、聞いてると計算量も大丈夫そうなので実装してもらう
  • Eをsutaから概要を聞いて考える。ワーシャルフロイドして辺を張り直すと2部グラフがいくつかできる感じになることに気づく。ここで勝ちを確信する(ここが悪夢の始まり)
  • 2部グラフを塗って、数の少ない方を足していく解法を僕が実装するが9ケース目で落ちる。実装を見てもらうが別におかしいところは見当たらない... ここで暗雲が漂い始める。
  • kiyoshi0205がDを通したので問題概要と考察を共有すると「あってそう」と言われる。実装ミスも見当たらないので3人でコーナーケースを見つける旅に出る。
  • 残り30~40分ぐらいでkiyoshi0205がコーナー発見、嘘が発覚。なんやかんや3人で議論して最小点被覆ですねという話になって僕が実装を再開。
  • なんかバグる(←??????????????????)ドチャクソ焦ってしまったぼくはkiyoshi0205に泣きついて交代してもらう。Eが通る(本当にごめんなさい)
  • Fを考察するも時間が足りず終了

結果

5完28位。Eで嘘に走ってなければ+1完できたかも... 大戦犯...

f:id:bakamono1357:20200916224903p:plain

2日目

これもチームUHISHIROで出ました。

コンテスト内容

  • 僕がAを読む。「多倍長整数か???」「いやごめんなんでもないわ」→AC
  • 面倒そうなBをsutaが書いてる間にCで詰まってそうなkiyoshi0205の様子をチラ見する。「行列累乗なんだけど行列どう作ろう...」と言っていたがこれはkiyoshi0205にやってもらうべきじゃないやつっぽいので、僕に任せてもらいkiyoshi0205には後ろの問題を見てもらうことに
  • sutaがBをAC。ほどなくして僕がCをAC。
  • kiyoshiがDはできそうなんだけどよくわからないという。僕もsutaもDを見るがパッとはわからん...
  • このときDGM?が解かれていた気がする、Gを僕が読んだので概要を伝えると、ダブリングだとkiyoshi0205がいうので即実装してもらう
  • Gが通らない
  • Gが通らない
  • Gが通らない
  • この辺からやばくね?みたいな感じになる。僕がDを整理してしばらくすると、kiyoshiが「これどっかでみたぞ」「PG BATTLEで実は貪欲でいけるやつだ」→調べると本当にほとんど同じ問題 sutaが貪欲を書いて証明:AC
  • kiyoshi0205がMを見ると、「Grundy数か」といい、なんやかんやで1人で詰めてAC。(すごい)
  • sutaがJ解けそうらしい、多少思い違いがあったらしいけどすぐに考察を修正してAC(すごい2)
  • ここらへんでチームの雰囲気が明るくなる(俺何もしてないけど)。Gのコーナーを探そうという気持ちになる。実装方針を聞きながらソースコードを追っているとオーバーフローを発見したので指摘、すぐにkiyoshiが修正→AC
  • 7完して安心するけどライバルの早稲田2チームに勝つためにIを全力で考察する。なんか基底変換をしていけばいけそうだけど、線形代数を忘れすぎて詰めきれず時間切れ...

結果

7完28位。give usとyamad_as_a_serviceは8完してるので完敗... 僕が完全にお荷物になってしまった、精進しよう... f:id:bakamono1357:20200916230602p:plain

3日目

kiyoshi0205は参加できないらしいので1人早稲田競プロslackでメンバーを募集すると、yamadさんが入ってくれることに... チームmouko_tanmen(yamad, siro53, suta)で参加しました。

コンテスト内容

  • まず僕がAを読む。なにこれ難しくね???→Bを読んでました... すぐにAC
  • yamadさんがCを詰めたらしいので書いてもらう。この間僕はなるべくすべての問題に目を通して、簡単な問題を探すことに
  • sutaがBを考えるがかなり厳しそう、とりあえず出た解法を出すもWA
  • とりあえずDEFIJMぐらいを読む。Mの概要を共有し、自分はIを考える。しばらくするとyamadさんがM解けたらしい、このタイミングでIが解けたので解法を共有するとそっちの方が軽いのでまとめて書いてもらう。
  • Iが通る。
  • Mが書けたそうだが若干TLが怪しいらしい。yamadさん「(submissionを見ながら)ありがとうありがとうありがとうありがとうありがとうありがとうありがとうありがとうありがとうありがとう」→TLE
  • これで通らんわけがない、と少し改善してまた提出。yamadさん「(submissionを見ながら)ありがとうありがとうありがとうありがとうありがとうありがとうありがとうありがとうありがとうありがとう」→TLE
  • unordered_mapが重そうなので、3進数は適当に変換すれば配列で持てませんか→修正してもらい、AC
  • この間にBの実験コードを僕が紙コーディングしてsutaに渡す、sutaが書き上げて実験したところ場合分けがちょっと足りなかったらしい。全員でありがとうと合唱しながら提出するとAC!めっちゃ盛り上がる
  • この間に僕がFを少し考えていて、現時点での方針を共有。なんかランレングス圧縮的な考え方だったきがする(だいぶ的外れ...)(実は誤読してたんですけどね)
  • yamadさんがEを考えるも、どうしてもキツいらしい。(実は誤読(正確には途中で問題文が変わった)してたんですけどね2)
  • sutaがGを読んでいたのでyamadさんに共有するとDPなんじゃないかみたいな話になる。しばらくyamadさんが1人でGを詰める。
  • 僕とsutaはFを詰めることになった。とりあえずPC空いてるし小さいケースを全探索するコードを僕が実装、バグらせる(え?)
  • この時思いついたら提出しちゃえみたいな感じだったので現時点での考察でFを提出→WA
  • 全探索コードのバグが直る。なんか小さいケースだけ全探索すればいいんじゃね→WA
  • ここでyamadさんに「隣り合うマスが異なる色じゃないと操作できないんじゃないの?」と言われ、誤読発覚。全探索コードを治すと、今までの考察が白紙に戻りかなり絶望する。
  • yamadさんがこの間にGを詰めきれたらしく、実装してAC。Fを通すぞという気持ちになる
  • 頑張って不変量を探そうみたいな話になる、suta「なんか出現回数の偶奇でうまくいけないかなぁ」これを聞いて僕が2点swapができるんじゃないかと気づく。2点swapができるなら出現回数を合わせられるならYesじゃないか?みたいな話を2人に共有してみると、そうじゃん!!!証明:ACという感じになり、s==tのコーナーは最初に弾いてもらうようによしなにsutaが実装するとAC、ここマジで一番声出た
  • Ramen_as_a_ServiceがEを通してるのでyamadさんがEを再考する、ここでyamadさんの現時点での考察を聞くとsutaが誤読に気づく。なんか途中で問題文が変わってたらしい。yamadさんは解けそうだが時間が足りるか怪しいとのこと。
  • 僕とsutaでJを考察するが、手も足も出ない。EもWAが取れず、コンテスト終了。

結果

7完24位。 f:id:bakamono1357:20200916233046p:plain

感想

どのセットも内容が濃くて、非常に勉強になるしモチベーションも上がりました。 オンラインでの開催でしたが、まるでオンサイトで参加してるかのような緊張感で取り組めました。 作問者の方々ならびにHUPC運営の方々、本当にありがとうございました。お疲れさまでした。

ALC(AtCoder Library)を手元で動かすメモ(自分用)

はじめに

  • 基本的には配布されているac-library/document-ja/appendix.htmlを読めばわかる内容ですが、自分用メモに書きます。結構詳しめに書いてみたので、何もわからない人は参考にしてみてください!

  • 筆者の環境はWSL(Ubuntu 18.04 LTS)、g++のバージョンは以下のとおりです。 f:id:bakamono1357:20200908124942p:plain

  • (僕はパソコンには大して詳しくないので、「いや、それはまずいだろ」みたいなことをしていることがあるかもしれません。そのときは優しく教えてほしいです...)

前提

  • g++が使えること(clang++とかVisual Studioでも動くらしい?試してないのでわかりません)

手順1

手順2

  • 先程のac-libraryというファイルを、普段競プロするのに使っているディレクトリの中に移動させます。
  • bashcp コマンドを使うと一発でできます。
    f:id:bakamono1357:20200908130248p:plain
    cp -r (ac-libraryがある場所) (移動させたいディレクトリの場所)でできます。
    f:id:bakamono1357:20200908130816p:plain
    普段僕が使ってるkyo-proフォルダにac-libraryが移動(コピー)された図

手順3

※2020/09/08 13:53 追記:.profileじゃなくて.bashrcに書くべきだったようですので、修正しました

  • vim ~/.bashrcとターミナルでコマンドを打ちます。

  • 次のような画面になると思います。iを押した後、ファイルの一番最後にexport CPLUS_INCLUDE_PATH=(さっきコピーしたac-libraryファイルのある場所)を追記して、escキーを押し、:wqと入力します。

f:id:bakamono1357:20200908135018p:plain

  • 最後にターミナルでsource ~/.bashrcとコマンドを打ちます。

手順4

  • ターミナル(VSCode)を再起動して、手元で#include <atcoder/all>しているcppファイルがエラーなくコンパイルできているか確認できれば、成功です。

f:id:bakamono1357:20200908135245p:plain
何も怒られてなさそう、やったー

おわりに

  • あんまり試してないのでなにか致命的なミスがあるかも... その場合は優しく教えていただけると助かります(震え声)