週記(2024/03/25-2024/03/31)

03/25(月)

午前10時に目を覚ましたのだが、布団でハーメルンを読んでいたら午後1時を回ったくらいに寝落ちしてしまったらしい。次に起きたのはインターン先定例会の開始時刻である午後3時半だった。飛び起きて出席。

先週は1on1以外何もやっていない。今週は先々週のミーティングの第2回開催に向けて日時を調整することにした。2回目を行うというのは同意が取れているが、先週送ったメッセージにはまだ音沙汰がない。4月以降のスケジュールがわからないのでできれば今週中にお願いしたいところ。

勉強会は高速な流体シミュレーションの話だった。流体シミュレーションとはつまりナビエ・ストークス方程式数値計算であるようだ。微分方程式数値計算は大学の講義でも触れたことがあるが、方程式そのものを理解していないので魔法みたいだという感想しか出てこない。境界条件として端の処理を変えると結果が結構違ってくる点は面白いと思う。ただ、今回はトーラスとのことだったので関係なかった。

解散後はずっと週記を書いていたが全然間に合わず、コンテストが全部穴あきになった状態で投稿。その後机で寝落ちしてしまったので、午前2時半ごろ布団に移動した。

明日は午前中に大学全体の学位記授与式、午後からは数学専攻の学位記交付式がある。前者は朝早いし会場は遠いしでモチベーションがあまりない。天気予報を確認したところ朝から雨だったので、行かないことにした。後者だけで十分だろう。ちなみに午後からは降水確率0%と書いてあったが、よく見ると晴れるのではなく雪に変わるらしい。この時期に降るとは信じられない。

いつの間にか眠気はどこかに行ってしまっていた。早起きする必要もなくなったのでハーメルンを開き、「そのウマ娘、星を仰ぎ見る」を読了。主人公がウマ娘かつトレーナーということで、レースを走る担当ウマ娘と共同で領域を開く設定が新鮮だった。

syosetu.org

次に読む作品を捜索掲示板で漁ってみたがピンとこない。結局「ウマ娘 ワールドダービー 凱旋門レギュ『4:25:00』 ミホノブルボンチャート」の読み返しを始めてしまった。

syosetu.org

午前5時半ごろ寝落ち。

03/26(火)

午前9時半起床。学位記授与式の配信を眺めながらハーメルンを読み、終了して布団に戻ってからも読み続けていた。正午くらいには「ミホノブルボンチャート」のアフターストーリーを一通りおさらいして満足し、別作品の溜まっていた更新を読み始めた。

www.tohoku.ac.jp

午後0時半に布団を脱出。シャワーを浴びてスーツを着たらギリギリの時間になったので、慌てて家を出た。すでに結構な量の雪が積もっており、足元が悪い中革靴で地下鉄駅までダッシュ。車内は学位記授与式帰りと思しきスーツ・振袖姿の人で激混みだった。

学位記交付式が開会する午後2時には何とか間に合った。学籍番号順に座席が指定されていたのだが、予め欠席の連絡を入れたらしい人の席もそのまま確保されており、特に自分は一列5人掛けの机を一人で使うことになった。他の列がすし詰め状態なのを見て申し訳ない気持ちになった。そうやってギチギチに詰めないと入りきらないから、この式は学部卒業時、感染症対策で開催されなかったのだろう。

雪で外に出られないため、数学棟前ではなくその玄関に並んで記念撮影。その後談話室に移動して祝賀会となった。

祝賀会が開会したのは午後2時半ごろ。ちょうどパ研合宿1日目の開始時刻となったので、談話室の隅で仁王立ちして参加した。もともとこのコンテストは午後2時開始だったのだが、前日に30分ずれて助かった。

パ研合宿2023 第1日「SpeedRun」 - AtCoder

Aはよい。Bはa\lt bかつc\lt dかつa\le cとなるようにswapして、a\lt c\lt b\lt dなら4、そうでなければ3。Cは最大値が正ならOK。Dは(x,y)の代わりに(x+y,x-y)を考えると、片方の次元に+2aするだけになるので簡単。Eは辺をK倍してオイラー路が存在するか判定。

Fは全部作れるんじゃないかと思って考え始めた。値が偏っていると嬉しいから、例えば2べきを並べるといい感じになりそう。しかしこれでは値域の制限からすべてのNに対する解には程遠い。別の構築を思いつくまま考えているうち、条件が非常に強く簡単には満たせないことが分かってきたので、ちゃんと考察することにした。

まず最小値は0としてよい。長さ3の部分列0,a,b0\lt a\lt bを満たすとき、条件はa\le\frac{a+b}3\Leftrightarrow 2a\le bとなる。やっぱり2べきだった!長さ4以上の部分列に対してどうなるかは調べていないが、おそらく大丈夫だろうと信じて0,2^0,2^1,\dots,2^{29}を提出し、通した。

Gは正の数があるか、負の数があるかで適当に場合分け。Hは氷の張った道を通った回数と現在時刻をコストとしたdijkstra。Iは5\times 10^5のことをN\log Nだと捉えてしばらく固まっていたが、冷静になるとN(N-1)/2である。JはO(N^2 K)のdpを書いてぐっと睨んだら畳み込みが使える形になっていた。

Kで詰まっている間に人々と交流。Twitterで何度か競プロ関係のツイートをしていた人に話を聞いたら、なんと競プロで就職まで決まったらしくかなりびっくりした。さらに自分のツイートが競プロを始めるきっかけになったとも言ってもらえて感激。また4年ゼミのときお世話になった研究室の集合写真に混ぜてもらい、先生と修論についてしばらく話した。

30分くらいそんなことをしているうちにKが解けた。最終的に立たなかったbitを一つ決めると、それを含まない要素だけ全部使うことになるはず。そうして得られたXがvalidか調べればよい。Lは最小値と2番目の最小値をできるだけ端に置くのが良い。あとは適当に埋めてよいため、二通りとも試せる。

このあたりで祝賀会が終わったはず。教室に居座ってコンテストに出続けた。Mは実験すると2べき引く2が作れるらしい。2べきのiに対してはp_i=iとし、余っているところは二つずつ組にして(p_a,p_b)=(b,a)としていった。ただし奇数個余る場合は(p_3,p_5,p_6)=(3,5,6)で調整。小さいNに対しては埋め込んだ。

Nは(h,w)が負け状態であることとhw-\min(h,w)\lt K\le hwが一致する。h\le wとして式変形すればw-1\lt\lceil K/h\rceil\le wより1\le h\le\sqrt Kw=\lceil K/h\rceil。これによって負け状態そのものに加え、一手操作することで負け状態にたどり着けるものも分かった。つまり、HまたはWA:=\bigcup_{h=1}^{\sqrt K}\{h,\lceil K/h\rceil\}に含まれていればよい。

ここからは単なるエスパー。K=1のときH=1またはW=1を踏むと負けることから、石の数が(H-1,W-1)である2山Nimで解ける。Kが一般の場合はAを踏むと負けるので、石の数をH-\#\{a\in A\mid a\le H\}などとした2山Nimで解けると思った。面積K以上という条件がどこに行ったのかは知らない。H,W\not\in AならH=Wを判定することになるので、たまたま結論が想定解法と一致しただけではないかと考えている。

残り時間1分半での滑り込みでNを通し、14完8位。SpeedRunと言いつつ難しい問題が出るのはパ研合宿では毎年恒例だが、やっぱり序盤で詰まると苦しい気持ちになる。BFJKがその前後の問題と比べて難しかった。

教室にはもう誰も残っていない。最後に入学式・卒業式恒例のスーツ姿の自撮りをし、厚みを増した雪を踏みしめて帰宅した。

家に辿り着いてすぐ着替え、布団に倒れこんだ。少しハーメルンを読んで午後7時過ぎに寝落ち。

03/27(水)

午前1時起床。ハーメルンの更新を読み続けていた。「今日も楽しく安価だ!」の最新話まで追いつき、続いて「貴方の強さは私が知っている。」を開いた。

syosetu.org

syosetu.org

途中2時間半ほど寝たりしながら読み続け、午前10時半ごろに300話までたどり着いた。主人公は無事無敗のまま現役を引退しトレーナー編に突入。やっぱりセリフ回しが受け入れにくいため、一区切りついたことだしここで切り上げることにして、新しい作品を見繕い読み始めた。

午後1時半、布団を抜け出してパ研合宿2日目に参加。外を見たら昨日の雪がもう解け消えていてびっくりした。しばらく残るタイプの積もり方だと思ったのだが……。

パ研合宿2023 第2日「パ研杯」 - AtCoder

書く

「あなたはノースティリスの冒険者ではない。(ウマ娘×Elona)」を読了。「目覚まし時計」を筆頭にウマ娘アプリの超常的なアイテムがいくつか出てきて、その不自然さがElonaの殺伐とした感じと合わさり、ウマ娘二次創作としては新感覚の読み味だった。ところで「目覚まし時計」はそのぶっ飛んだ効果から最初Elona由来だと思っていた。原作を知らないが故のミス。ほかにも見落としたネタがあるんだろうなと思う。

syosetu.org

食事してから、また「ミホノブルボンチャート」の読み返しを始めた。昨日はアフターストーリーを読んだので今日はメモリー掲示板回をおさらいしていた。

午後8時頃寝落ち。午後11時半に目覚ましで起きたが、布団から出られずCodechefは断念した。2時間ほどハーメルンを読んでまた就寝。

03/28(木)

午前6時起床。3時間ほどハーメルンの読み返しを続けていた。一段落したところでキリがないため布団を脱出。昼までシャワーを浴びたり日記を書いたりしていた。

「冬季限定」の発売日が決定したらしい。忘れず予約したい。

学食で昼食を摂り、ラノベを受け取って帰ってきた。午後1時半からパ研合宿3日目。

パ研合宿2023 第3日「Teamwork」 - AtCoder

書く

M2後期の単位集計ツイートをした。学務情報システムから単位取得状況を確認しようとしたら、年度の切り替わりを待たずアカウントが消えたのか見られなくなっていて焦った。今期はそれぞれ4単位、8単位の必修を取っただけなので記憶から復元。ちなみに評価も覚えていて、最後に見たときはCが付いていたはず。そ、そんな……。

結構な眠気があるが、次の予定まで1時間半しかなかったため仮眠できずグダグダ過ごしていた。

午後6時半から、月曜日に言っていた第2回ミーティング。1時間ほど話し合った。なんだか機械学習ではない開発のタスクが生えた気がする。心機一転頑張っていきたい。詳細を詰めるため、来週金曜日に第3回のミーティングをすることになった。

布団に戻って午後8時から3時間ほど仮眠し、CF #937 div.4に出た。10分こどふぉって午後11時45分開始。

Dashboard - Codeforces Round 937 (Div. 4) - Codeforces

Aは出力が3種類あって面倒。Bはよい。Cはさすがに怠すぎる。Dはあらかじめdpで全部判定しておく。Eはnの約数kを全列挙し、それぞれチェック。このチェックが微妙に面倒。Fはa+1=cが作れる条件で、高さを最小化するためにはまず次数2の頂点を完全二分木のように配置してしまうのが良い。あとは算数。Gは自明なbitDP。ただしg_i=g_j\lor w_i=w_jの判定は時間がかかるため前計算しておく。

CとEで時間を取られて20位。Dは(10^5)^2をint型で計算してしまっている部分があったが、幸いオーバーフローしても負の数にはならなかったようで助かった。

www.youtube.com

TCBの2024/03回が開催されていたので参加した。今回は難易度6までの全8問ということで簡単。

https://techful-programming.com/techful/event/5621

5問目までは自明。6問目はSmall Multiple典型。7問目は実験すると、(1,0,0,\dots)という列から初めて何度か累積和を取ったものが縦横に並び、その積が各マスに入るらしい。二項係数で計算。行の和・列の和で置き換えるものと誤読したり、二項係数を合わせるのに手間取ったりで14分かかった。8問目は直径の端点のどちらかが最遠点になる性質を使う問題で、最近よく見るから素早く反応できた。

難易度6までしかないので順位表は完全に公開されている。何とか理論値を出せたものの、3分半の差で2位となった。7問目で時間を溶かしていなければ優勝も狙えたかと思うと非常に残念。まあ期間は今週末までだから、これからもっと速い人が出てくる可能性もある。

机で寝落ちしたので午前4時頃布団へ移動。しかしスマホを触っていたら眠気が覚めてきたため、起き上がって食事したりゴミを出したりした。

カクヨムで「スレ主がダンジョンアタックする話」を読了。ヒロインがヤンデレで肌に合わない。

kakuyomu.jp

シャワーを浴びて午前9時半就寝。

03/29(金)

正午起床。今日は夕方から両親が来る。それまでに少しゲーセンでも行こうかと思っていたのだが、睡眠時間が足りないためまだ寝ていたい気持ちもある。1時間ほど迷ってからようやく出発した。

学食で昼食、購買でラノベ受け取り、クリーニング屋にワイシャツを預け、本屋で予約していた古典部シリーズ愛蔵版の第3弾を受け取った。外出に際し済ませておきたかったことはこれで終わり。

ゲーセンで7クレ遊んだ。相も変わらず新曲埋めが続いている。「taboo tears you up」のULTIMA譜面はネットでは不評のようだったが、実際やってみると思ったより押せて楽しかった。終盤は勘で手を動かしてハマり待ちという感じだからAJは難しそう。ラストのタップスライドの速さもよくわかっていない。

午後4時過ぎ、車で仙台に来た両親に拾ってもらい帰宅。2時間ほど仕送りを整理したり水回りの掃除をし(てもらっ)たりしてから買い物と夕食に出かけた。

イオンでバナナを大量に買ってもらった。数えたら28本あったので、ツイートの絵文字も28個並べてある。

夕食はスシロー。両親も自分も初スシローである。わさびがセルフサービスだったり醤油皿がなかったりと慣れないシステムだったが、自分はそういうコストカットについてYouTube Shortsで予習済みだったため、直ちに適応することができた。またその安さに驚き。味も特に悪いとは感じず、企業努力に感心していた。

www.youtube.com

帰宅して両親と別れたのが午後9時過ぎ。今日のyukicoder 424はいつもより20分早く始まっていたので、10分ちょっと遅れての参加となった。

yukicoder contest 424 - yukicoder

書く

シャワーを浴びて午前1時就寝。

03/30(土)

午前8時起床。カクヨムを読んでいた。

「ダンジョンキャンパーズ~世界で唯一、冥層を征く男は配信で晒された~」を読了。主人公が持つダンジョン素材なり特別な知識なりを狙う悪意が描かれる作品はたまにあるが、基本的に主人公が超人的に強いためあまり問題にならない。しかしこの作品では戦闘力がそれほどないという設定だったためかなり冷や冷やした。クランに入ったのもそれ以外の選択肢がなかったからという感じなのでモヤモヤする。

kakuyomu.jp

正午くらいにまた寝て、次に起きたら午後6時半になっていた。またカクヨムを読んで過ごし、午後9時からABC347。

AtCoder Beginner Contest 347 - AtCoder

書く

www.youtube.com

午後11時半からはCF combined、CodeTON Round 8。

Dashboard - CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!) - Codeforces

書く

www.youtube.com

しばらくハーメルンを読んでいたら急に強い眠気に襲われ、布団に倒れこんで寝た。午前7時前後だったはずだが詳しい時間は不明。コンテストの動画2本は公開に向けた作業ができておらず、翌日改めて行った。

03/31(日)

午後0時半くらいに目を覚ましてしまった。

カクヨムから「グルメダンジョンからの飯テロ(意味深)配信ーダンジョン食材に魅せられた僕は偶然助けた大人気配信者のクラスメイトに配信へと誘われるー」を読了。主人公の言動が幼すぎる。

kakuyomu.jp

ちょうどいい時間だったのでyukicoder 425に出てみた。

yukicoder contest 425 (MMA Contest 018) - yukicoder

書く

食事した後、作業して昨日の動画を2本公開した。午後4時頃布団に戻るもなかなか眠れず、ハーメルンを開いてしまう始末。「三大始祖に転生したのでトレーナーになって推しをハスハスする」を読了した。別の作品から作者つながりで読んでみたが、案の定ウマ娘を推す姿が過剰でちょっと見ていられなかった。

syosetu.org

眠いから仮眠したいという気持ちとAGCが近いから起きておきたいという気持ちの板挟みになり、午後5時半くらいから一瞬だけ寝てみることにしたのだが、なかなか起きられず結局午後8時くらいまで寝ていた。食事したりシャワーを浴びたりして眠気を振り払い、午後9時からAGC066。

AtCoder Grand Contest 066 - AtCoder

書く

www.youtube.com

maspyさんが実況動画についていろいろコメントを残してくださった。自分も改めて見返していたが、AもBも初手でかなり正解に近づけているように見える。それなのになぜ1時間ずつかかってしまったのか、自分でもよくわからない。構築で詰まったときは何を反省すればよいのだろうか。

TCBが終了していた。結局2位のままだった。

日記を書いて午前10時就寝。