読書記録(2024)

kotatsugame.hatenablog.com

1月

  • 12日
    推しにささげるダンジョングルメ01
  • 14日
    性別不詳VTuberたちがオフ会したら俺以外全員女子だった

2月

  • 2日
    放課後、ファミレスで、クラスのあの子と。
  • 21日
    一生働きたくない俺が、クラスメイトの大人気アイドルに懐かれたら5
    双子まとめて『カノジョ』にしない?2

3月

  • 20日
    アルゴリズムの乙女たち
  • 22日
    玄関前で顔の良すぎるダウナー系美少女を拾ったら
  • 23日
    物語に一切関係ないタイプの強キャラに転生しました

4月

  • 10日
    迷宮狂走曲2
  • 11日
    凡人転生の努力無双
  • 14日
    凶乱令嬢ニア・リストン4
  • 15日
    凶乱令嬢ニア・リストン5
  • 16日
    S級冒険者が歩む道2
  • 20日
    無能と言われ続けた魔導師、実は世界最強なのに幽閉されていたので自覚なし4
  • 21日
    家事代行のアルバイトを始めたら学園一の美少女の家族に気に入られちゃいました。

週記(2024/04/15-2024/04/21)

04/15(月)

午後3時半前に起床。インターン先定例会に出た。

先週はセミナー準備に追われて進捗がなかった。セミナーが2回あったからなので、毎週こんなことになるわけではないはず……と言っておいたが、実際のところ今後どうなるのだろうか。まあどうなるというか、自分がどうするかの問題。

勉強会はコーディング時に使える便利ツールの紹介だった。VSCode拡張機能がメインだったので自分には関係ないなと思いながら聞いていたが、「GitLens」はかなり良さそうだった。GitHubGUIからBlameを使うよりよほど高機能らしい。

解散後はずっと先週の週記を書いていた。日付が変わる前に一旦投稿し、その後さらに1時間ほど追記してUniversal Cup以外は埋まった状態になった。

その後朝方までかけてラノベ「凶乱令嬢ニア・リストン」5巻を読了。面白かった。前の巻を読んでいても感じたことだが、学院でのシーンがもうほとんど存在しない。さらには普段の生活範囲でのイベントすら粗方描かれ切ったのか、長期休暇で遠出した先での話が多く、そのため休みのシーンだけつまみ食いしているような感覚を覚える。このようにどんどん時間を飛ばしてもらえると主人公を幼少期から描くにあたっての中だるみを感じずに読める。「幼年期」「少年期」「青年期」など章ごとに時間が大幅に飛ぶのはこれの極北だと思っていて、見かけると興奮する。

今季の履修を決めた。博士課程では20単位取る必要があるが、そのうち16単位は研究と博論で自動的に埋まる。つまり残りの4単位だけ考えればよい。専門と近い話題の集中講義を見つけたので、今季はそれだけにすることにした。

またしばらくラノベを読んで、午前9時就寝。

04/16(火)

午後3時起床。ラノベを読んでいたら午後5時を回っており、慌てて大学に向かった。今日は午後6時過ぎから競プロサークルの新歓に顔を出すつもりで、その前に夕食を摂っておきたい。学食に着いたのが5限が終わる直前だったようでギリギリ混雑に巻き込まれず、急いで腹に詰め込んだらなんとか間に合った。

新歓の内容は非常に良かったと思う。まず新サークル長のnononさんによる競プロ、弊サークル、AtCoderの説明があり、続いてブラウザ上で動くアルゴリズムゲームをプレイし解説を聞いた。この解説パートは競プロ経験者でも満足できるものだったし、未経験者も雰囲気を知る手がかりとして参考になったのではないか。未経験者の本当の気持ちはわからないが……。

プレイしたゲームは前サークル長のsotanishyさんが作ったもの。長さ8の列を比較回数20回以下でソートする問題は、マージソート想定のところ、自分は挿入ソートで挿入先を二分探索して解いた。実用上は挿入操作が重くて使えないが比較だけなら簡単。比較回数も、天井関数を無視すれば\sum_{i=1}^{N-1}\log_2(i+1)=\log_2 N!となり、N!通りの並び方を区別するための理論的下界と一致する。

終了後、サークルメンバーや入部希望者たちとしばらく喋って午後8時過ぎに解散。山に登って先週金曜日に置き去りにしてきた原付を回収し、帰宅してからはラノベを読んでいた。

「S級冒険者が歩む道」2巻を読了。非常に面白かった。このシリーズは導入こそ追放モノで、1巻で決定的な決裂が描かれていたが、そこからじわじわと関係が改善された上での2巻だったし、自分も1巻を読んだ時の記憶をある程度失っていたので、ギスギスした感じが一切なく読みやすかった。主人公が自分の実力に自覚的だったり、正体を特に隠していなかったりと真っ当に最強の座にあるのも嬉しい点。

今週末が期限となっている博士研究支援プロジェクトへの応募のため、申請書を書こうとした。しかしまず必要となる研究計画書と向き合った瞬間、学振のときの辛さがぶり返してきて、手が動かない。修論の英訳修正に逃げ出した。

午前8時半就寝。

04/17(水)

午後2時半起床。外出して、クリーニング屋で先週預けたスーツを回収し、大学生協でいくつか用事を済ませた。用事というのは新幹線の切符購入、メガネのメンテナンス、学食で食事、ラノベの受け取り。

大学生協でも切符が買えることを知らなかった。当然学割の適用も可能なので、みどりの窓口に行くより近いし人も少ないしよっぽど良い。ただし店員が少し不慣れなので要望があれば自分でリードする必要がある。祖母の一周忌に向けた今週末の帰省の切符を買ったのだが、北陸新幹線に関する確認で少し手間取った。

メガネはレンズの留具の調整。リムレスなので着脱の際つるを開いたり閉じたりする力がすべてブリッジにかかり、外れやすくなってしまった。レンズも少し傷ついたし度も合っていないしそろそろ買い換えようかな……と考えていたら、新年度のキャンペーンで1割引だと聞かされたので、その場で新調することに決めた。帰省から帰ってきたら受け取る。

帰宅後は研究計画書と向き合っていた。あまり進まないまま午後9時くらいまで耐えたが、どうしても今日ゲーセンに行きたかったので、気分転換という理由をつけて出かけることにした。歩きながら作文していたら椅子でうずくまっているより進みは良かった。

今日は閉店まで13クレプレイ。捨てゲー込みなのでプレイしていた時間に比べるとクレ数は多くなっている。新曲を埋めた。「INTERNET YAMERO」EXPが、MVのぴょんぴょんしたダンスをエアー付きタップで再現していて非常に楽しかった。MASはノーツ数が多くて満足感があるが、かなり難しかった。

油そばを食べ、ドンキに寄って、日付が変わったくらいに帰宅。シャワーを浴びた後改めて申請書執筆に取り組んだ。

午前6時までかけてなんとか研究計画書と自己分析をでっち上げた。読み返すのは辛いためChatGPTに添削を頼んだが、かなり便利。ただし聞き方を間違えると要約されてしまう。必死に水増しした部分が一瞬で判別されてしまうと目の前が真っ暗になるため、注意が必要。自己分析については去年の学振で書いたものを一部流用した。振り返ってみると、研究らしいことを一つもしていなかった当時によくぞ1ページも埋められたものだと感動してしまう。

書類を先生に送り、1時間ほどラノベを読んで就寝。

04/18(木)

午前10時半起床。30分かけて布団から這い出し、原付で登校した。着いたときは空いていた学食だが、図書館で教科書を借りる一瞬の間に長蛇の列が形成されていて唖然。まだ2限が終わる時間ではなかったはずなのに……。仕方ないので購買でパンを買って食べた。

論文を読んで過ごし、午後1時からセミナー開始。今日は後輩の発表だった。用意してきた分量で足りるか心配していたので、どうせ途中で具体例を計算するよう言われるから足りるよとアドバイスを送ったが、今日はその計算が大変で時間を大幅にオーバーし3時間かかった。先生による発表はなし。

その後先生と一対一で修論の英訳修正に取り組んだ。途中学食に行きつつ6時間コースでかなり完成に近づいた。その場で確認しながら直していくと手っ取り早くて良い。英語での言い回しが全然身についていないことを実感した。そこを先生にカバーしてもらいながら書いたので、もう自分が最初に書いた文章は残っていないレベル。

その後研究計画書についてしばらく話し、日付が変わる直前に帰宅。

Yandex Cupの賞金振り込みが遅いなと思っていたら、ゆうちょ銀行への送金に失敗していたらしい。とりあえず、以前ダメと言われたPayPalが使えないか改めて聞いてみることにした。

銀行口座よりPayPalに送金してもらったほうがお互い簡単かと思ったものの、そういう選択肢はないらしい。

週記(2023/12/11-2023/12/17) - kotatsugameの日記

少し日記を書いたあと申請書と向き合った。研究計画書を少し書き直してエッセイを2本生成。既存の研究領域を超えた発展のビジョンについて書かされ、完全無欠のポエムになった。ChatGPTに評価してもらったら明確なビジョン・論理的な展開・詳細が不足していると言われ横転。ポエムであることを見抜かれている。

ホスフィンにも見せたらコメントが返ってきた。彼も忙しいのにありがたい話。やはりエッセイがポエムすぎるとのことで、説得力を増すアドバイスをいくつかもらい、それに従って可能な限り修正した……つもり。サーベイが足りないのはどうしようもなかった。

先生に送って午前10時就寝。

04/19(金)

午後2時半起床。今日帰省する。新幹線の時間まではまだかなり余裕があるが、その前にゲーセンに行っておきたいため無理して起きた。

準備して出発。駅近くの丸亀製麺で食事して、ゲーセンで9クレ遊んだ。眠くて集中力がないしドライアイがひどくて目を開けていられず、成果はない。ただし今日はチュウニズムクエストを進めることが目的だったため、プレイさえできればそれで良かった。

アンパンマン像を撮り、午後6時半の列車に乗車。車内ではラノベを読んだりスマホを触ったりして眠気に耐えていた。

長野駅で各駅停車の新幹線に乗り換え、ふと隣を見たら姉がいてびっくり。駅まで迎えに来る親の手間を減らすため列車は合わせたが、まさか指定席で同じ車両・同じ列になるとは思わなかった。

午後10時過ぎに帰宅し、申請書の提出作業を行った。その後食事と入浴を済ませ、少しだけラノベを読んで午前0時半就寝。

04/20(土)

正午起床。

昼食を摂ったあとは、実家に置いてある「お隣の天使様にいつの間にか駄目人間にされてしまった件」の4巻ラストと5巻冒頭を読み返していた。体育祭のシーンとその後でストーリーが大盛り上がりする箇所だが、主人公とヒロインのやり取りも面白いということを再確認した。最近の巻はそこが少し苦手、ということはつまり食傷気味なのではなく高すぎる糖度に拒否反応を起こしているらしい。

礼服に着替えて祖母の一周忌へ。祖母宅はこの1年でかなり片付けが進んでいた。古新聞が必要になったので引っ張り出してきたら、祖母が特別に保管していたものだった。自分の名前が載ったときのものもちゃんと残されていてしんみりとした気持ちになった。

一周忌を終えて実家に引き上げたら、そのままの格好で会食へ向かった。と言っても出席者は我が家のみ。料理は写真にまとめてある。感想としては、品数が多すぎるの一言。自分以外に完食できた人はいなかった。特にローストビーフは冷たすぎて味もよくわからないし、余計だったかなと思う。

帰宅してシャワーを浴び、午後9時からABC350に出た。

AtCoder Beginner Contest 350 - AtCoder

Aは……カス。ただでさえ面倒だしABC000というコーナーケースもある。特に制約の書き方も気づきにくさに拍車をかけていると思う。まあ他の簡潔な書き方は存在しないわけだが。Bはストーリーを読むと意味不明になるので歯医者とか治療とかはとっとと忘れるのがコツ。

Cは逆順列を管理するのが面倒なので、iの昇順にi\ne A_iの間A_iA_{A_i}を交換することを繰り返した。出力の制約i\lt jには気づいていなかったが、このアルゴリズムだと自動的に満たされる。ラッキー。Dは連結成分ごとに頂点数と辺の数を数えて算数。Eはメモ化再帰すると\left\lfloor\frac{N}{2^a3^b5^c}\right\rfloorしか出てこないやつ。

Fは括弧列を一旦パースすることで括弧の中身を右からも舐められるようにし、もう一回進む方向を持ちながら見る。Gは適当に根を固定したときの親が分かれば質問クエリに答えるのは簡単で、辺を追加する際小さい方の連結成分の親を愚直に再計算してもマージテクの逆で高速。

ノーペナ全完、3位。NibblesでAとBを縮めた。Aは1\dots 349から316Nを取り除いた残りの個数の偶奇をチェック。Bは1\dots NからリストのXORを使って更新していった。O(NQ)が通る制約で助かる。

しばらく日記を書いた後、午前2時くらいからは布団でラノベを読んでいた。「無能と言われ続けた魔導師、実は世界最強なのに幽閉されていたので自覚なし」4巻を読了。

あらすじに「アルスの実力はついに多くの民が知るところとなる」とあったからワクワクしながら読んでいたものの、思ったより多くなかった……。そのくせ主人公が持つ能力を知って求め暗躍するキャラばかり増えていくのだから大変。また主人公によるマッサージという謎の行動が頻繁に登場してかなりノイズになっている。お色気シーンのつもりなのだろうと思っていたが、それにしては中途半端だし、もしかして重要な伏線だったりするのか?

もう一冊手を出し、午前6時になってようやく寝た。

04/21(日)

午後3時起床。夕方までラノベを読んでいた。

夜は外食。帰りに本屋に寄ってもらい新刊を眺めていたら、宮内悠介さんの新しい短編集を見つけた。ラノベ専門サイトで新刊チェックをしていると、こうやって一般書を見落としてしまう。反射的に買ったが、単行本サイズなので帰省中に読み切ってしまいたい。

帰宅して入浴を済ませ、午後9時からARC176。

AtCoder Regular Contest 176 - AtCoder

Aにかなり時間をかけてしまった。i行目は(i,i),(i,i+1),\dots,(i,i+M-1)に1を書き込めばよいな、という観察から一般化する方向性を間違えたらしい。長さNの順列P,Qを用意して、(i,j)\mapsto(P_i,Q_j)と見なすことを考えてしまった。一応これでも解ける。P_1\dots P_MQ_1\dots Q_Mを適切に選べば必ず構成できる。k=0\dots Mについて、Aのうち出現頻度上位kを取り除くと高々M-k個しか残らないため、それに対応するBを貪欲に詰めてもはみ出ない。

Bは簡単。まず2^M\equiv 2^Kを使ってN\lt Mのケースに帰着する。この時点で2^N\lt 2^M-2^Kならよい。そうでない場合M-1=Kなので、最初から\bmod{2^K}で考えればOK。

Cもすんなり解けた。重みCの辺(A,B)があると思って条件を考えると、2本の辺が頂点を共有した瞬間1点確実に決まる。よって連結成分ごとに値がほとんど決定するようだ。さらに、残りは独立に考えられる。辺が残るとP_A=CP_B=Cのどちらかを選ぶ必要があるが、これはどちらを選んでも対称なので決め打って2を掛ければよい。あとは上限だけ気にする数え上げで、上限の小さい頂点から埋めていけば求まる。

Dはいい感じの考察ステップを踏めたと思う。まず求める値をP_1\rightarrow P_2\rightarrow\dots\rightarrow P_Nと移動したときの距離の総和と見なし、点ii+1の間を何回通るか数え上げる方針を考えた。これはP\le iP\gt iが切り替わるタイミングを数えればよい。しかし法則性がわからなかった。

考察を簡単にするためP_0=P_{N+1}=0を加えてみたのだが、そのキャンセル方法を考えているときに、端の値の数え上げならそこそこ簡単にできることに気づいた。これを2箇所同時に行うと(P_j,P_{j+1})自体が直接求まる。ただし遷移がシンプルでも状態数がO(N^2)あるためまだ厳しい。ここで先ほどの2値化を適用すると4状態になり、さらに線型性からj=1\dots N-1で同時に計算できる。

Eは2^N方針を考えていた。A_{\ast,j}の最大値となる更新をXYのどちらに適用するか決め打つ。そのとき、例えばXに適用するなら、A_{\ast,j}を降順に並べたときどこまで同じくXに適用するかを調整する問題だと思ってみる。するとその次の値がYに適用される最大値になるから、最終的なX_j+Y_jがわかる。

さらに矛盾する調整も「列iのここと列jのここを選ぶとコスト\infty」と書けるから、燃やす埋めるで解けそう。実現のためにはYのほうだけ真偽値を反転する必要があったものの、ともかく実際に書けた。頂点数O(NM)、辺の数O(N^2 M)、流量は500Nくらいになるだろうか。提出すると当然のようにTLEしたが、時間がなかったため最初に決め打つ2^N通りをシャッフルし枝刈りを加えて投げたら、1846msで通った。

5完13位。Eはそのまま燃やす埋めるになるらしい。してやられた。

午後11時半からはCF #940 div.2に出た。

Dashboard - Codeforces Round 940 (Div. 2) and CodeCraft-23 - Codeforces

Aは3本で1個作る。Bはn=1のとき自明、n\ge 2のときはx,k-x,0,\dotsとし、xk、またはkからあるbitを下ろしそれ未満のbitを立てた数とする。Cはr=cとする回数を全探索。r\ne cについてはペアの作り方が2重階乗、白黒の置き方が2べきで求まる。Dはyを決め打つ。yのMSBがa_x\oplus\dots\oplus a_zで立っていなければよいが、累積XORに関する条件に書き換え、左右から累積カウントを求めれば計算できる。

EはまずC(i,j)=\binom{i}{j}\times(j-1)!=\frac{i\times(i-1)\times\dots\times(i-j+1)}{j}。この値をjで割ったあまりは、j素数でなければ(j-1)!のせいで0になりそう。素数ならウィルソンの定理から(i-j,i]に存在する唯一のjの倍数をcjとして-c\bmod jになるので、iを固定したときの和をimos法で求め、その累積和を取ればよい。しかしサンプルが合わない。よく考えたらj=4のときあまりが0にならないiがあった。それも追加したら通った。

Fはよくわからない。まず値に乱数を割り当て、総和\bmod{(10^9+993)}をmultiset hashとする。またオイラーツアーしたりLCAを求めたりして、パスのmultiset hashがBITによりO(\log n)で求まるようにしておく。これが下準備。あとは値を半分に分け、片方だけBITに乗せてmultiset hashを比較することで、食い違う値の候補をどんどん絞っていった。計算量は知らない。F1は1500ms弱で通った。

k個見つかるまでもう半分も調べることにすればF2に拡張できる。しかし全然間に合わない。値の順番をシャッフルしたり、BITへの値の余計な積み下ろしを少し減らしたりして、pretestはなんとか4483msで許されたが、システスで落ちた。それもpretestに入っていたケースで落ちた。どうせHackされる暇なんてないんだからseedを固定しておくべきだったか。

6完7位。Fで2次元データ構造を使うと、値の積み下ろしなく特定の値だけ考慮するmultiset hashが計算できる。さらに、実は総和をそのままhashとして使っても良かった。色々高速化の余地はあったようだ。

ラノベ「家事代行のアルバイトを始めたら学園一の美少女の家族に気に入られちゃいました。」を読了。面白かった。主人公のスペックの高さから来る安心感がある。家事代行をバッチリこなすのは当然のことながら、家族からヒロインとの仲をからかわれてもそつなく返してかなりスマート。そのからかいも過剰なものではなかったりと、登場するキャラがみんな良い人柄で、読んでいて心地よかった。

日記を書いて午前5時半就寝。結局今週もインターンの稼働ができなかった。明日定例会の前になにかしたい。

週記(2024/04/08-2024/04/14)

04/08(月)

午前7時くらいに目を覚ましてハーメルンを読んでいた。

「勝ち逃げツインターボ」を読了。面白かった。ウマ娘二次創作で人間のスポーツに触れるものはほとんどないから目新しい。また担当ウマ娘が大逃げというのも新鮮だった。いないわけではないものの、その場合も大抵は圧倒的な強さで相手をすり潰すあっさりしたレース描写になりがちで、この作品のようにドキドキする展開にはならない。強いのは好きだが手に汗握るレースも好き。

syosetu.org

布団を出て先週の週記を書き、午後2時を回ったあたりでシャワーを浴びて大学に向かった。コロナ禍以来学食は昼の部と夜の部に分かれていたが、今年度からついに間の時間の営業も復活。授業開始日の混雑を警戒しこの時間を狙った。席は問題なく確保できたものの思ったより人がいて残念。しばらくすればこの時間帯はもうちょっと空いてくれるだろう。そうして弛緩した雰囲気の中で食事するのが好き。

購買でパンやラノベを買って帰宅。昨年度末、ミールの適用範囲が元に戻るだろうと言っていたが、実は臨時措置から通常ルールに格上げされるだけだったようだ。ミールのパンフレットにも明記されていたのにすっかり見落として騒いでいた。まあ特別な告知もなしに今までできていたことができなくなるなんてことは考えにくいか。

理由というのは、ミールの適用範囲拡大措置についてのもの。コロナ禍が始まってから何度かの期間延長を経て続いてきたこの措置だが、今のところ今日までということになっている。これまでの延長は数か月前の時点で告知されていたから、春休み突入に合わせて終わるのだと思う。いつもこの制度を利用してお菓子だったりパンだったりを買っていたので、残念。

週記(2024/02/19-2024/02/25) - kotatsugameの日記

帰宅して午後3時半からインターン先定例会。先週もミーティングをした。今週は特にそういう予定はなく、またタスクについてもいったん確認待ちだったり相手方のアクション待ちだったりする。

勉強会はAHC031の話。短冊状に切るのが正解というのはTLでも見ていたが、それでちゃんと面積が足りない場合のペナルティを小さくできるのはやはり驚き。また領域の切り分けが決まっていると割り当ては貪欲が最適になるというのは、アルゴの問題っぽくて面白かった。

解散後はずっと週記を書いていた。午後11時を回ったころに投稿し、半からのCF #938 div.3に備えた。

Dashboard - Codeforces Round 938 (Div. 3) - Codeforces

Aは難読。自分が読んだときは「ちょうど」n個というのが太字ではなかったため、そこを探すのにしばらく時間を使わされた。Bはa_{1,1}=\min bから構成してチェック。Cは前から\lceil k/2\rceil回、後ろから\lfloor k/2\rfloor回攻撃する。k\ge\sum aのケースだけ別で処理すれば前後で独立に考えられる。Dは幅m区間をずらしながら頻度配列の差を管理。

Eはkを固定するごとにimos法の更新と累積和の計算を同時に行ってO(n)で判定できる。なんだか見覚えがあって、01が隣り合っている箇所から端までの距離が重要だったはずだが、この問題とは合わないのでおそらく設定が少し違うのだろう。Fは4だけ別で処理し、1,2,3についてはあらかじめdpしておく。

Gはa_{1,1}の約数それぞれについてO(nm)で判定。約数列挙は\sqrt{a_{1,1}}まで見る愚直で十分だったが、間に合わないと勘違いし、エラトステネスの篩で素因数を一つメモしておく方法の素因数分解を持ち出した。Hは少し丁寧に評価するとr\le 11が言えるので、各塔と各rについて減らせるHPを計算し、bitDPした。手数が多くて面倒。

全完6位。

www.youtube.com

動画を投稿して午前2時半就寝。

04/09(火)

午前9時前に起きたが、ハーメルンを読んだりゴミを出したりダラダラYouTubeを見たりしていたらすぐ午後2時を回ってしまった。シャワーを浴びて外出。郵便局で用事を済ませた後、生協で散髪し、食事して帰ってきた。

再度シャワー。床屋帰りには切った髪を洗い流すため必ず浴びるようにしている。床屋でも洗髪してもらっているのだが、首元から服の中に入り込んだ毛はこうするしかない。今日は昨日浴びずに寝てしまった分を出る前にもこなしていたし、なかなか非効率的な段取りだった。

今週のセミナーで発表する内容を決めるため、論文を読み始めた。正直に言って何もわからない。日付が変わる前くらいに眠気がやってきたので逆らわず寝た。

04/10(水)

午前9時起床。論文を読んでいたがやっぱり何もわからず、途中2時間ちょっと二度寝していた。

午後3時外出。本当はゲーセンに行くつもりだったがセミナー準備が全然終わっていないため、用事だけこなしてすぐ帰ることにした。

まず入学式で着たスーツ一式をクリーニング屋に持って行き、ついでに近くの花見会場の桜が満開になっていたので先週と同じ構図で撮ってみた。毎年この時期は写真を撮っているのだが、きれいな構図を見つけられた試しがない。

あとは学食で食事し、ラノベを買って帰宅。セミナー準備をする。今週は木曜日のセミナーに加え金曜日にも他大学の先生を招いて話を聞くことになっており、そこで参考となる論文が送られてきたので、木曜日のセミナーではこれを扱うことに決めた。午前4時まで準備を進め、さらに1時間ほど修論の英訳修正を進めて今日は終わり。

その後、準備の合間に読み進めていたラノベ「迷宮狂走曲」2巻を読み切った。主人公の勘違いの理由が毎回丁寧に説明され、都合が良すぎることもあるものの分かりやすくて良い。装備を性能だけで選んでいるから統一感がなく気持ち悪いという設定は、別にそんな重要でもないかなと思うが、挿絵で忠実に表現されておりインパクト抜群だった。

午前6時半就寝。

04/11(木)

午前11時に起床し、1時間ほど布団でグダグダしていた。明日のセミナー後の夕食会で使う店を予約し、登校して学食で昼食を摂った。

午後1時から2時間は自分の発表。昨日準備したのは結局preliminariesの範囲だけで細かい証明は正直どうでもよかったので、もっと前に準備した分からまだ話していないところを扱った。次の2時間は先生が最近の研究内容について発表。予定されている学会発表に向け、この先数回は先生も話すらしい。

解散して後輩とともに学食に行き、しばらく話した。セミナーの途中で競プロの話が出たのだが、彼もQuizKnock・鶴崎さんがされているところから興味を持っていたらしい。APG4bを紹介しておいた。夕食の後も東北大学の学生向けサイトの案内等でしばらく立ち話をしていた。

帰宅後は気力が尽きたのでラノベを読んでいた。「凡人転生の努力無双」を読了。昔カクヨムでも読んでいたがやはり面白い。

大人の精神を持って転生したため幼少期から努力を積み重ねることができ、結果伝説的な力を手にするという、言ってしまえばテンプレ通りの流れ。ただし設定や描写がちょうど良いため面白いのではないかと考えた。努力を全部描写するわけではなく、ただし一気に飛ばしすぎるわけでもない。身に着けた技術も設定上あまり多くはならないが、無双するには十分であった。

修論の英訳修正を進めて午前3時就寝。

04/12(金)

午前9時起床。ちょっとハーメルンを読んでいたら、地下鉄ではなく原付で登校しないと間に合わない時間になってしまった。夕食会に行く際どうしようか迷いつつ、急いで出発した。

午前10時から2時間弱は招いた先生によるセミナー。最初は知らない用語しか出てこなくて絶望しかけたが、雰囲気で解釈したら正解を引き当てたらしく、内容には結構ついていくことができたと思う。今日は紹介していただいた論文の背景について話したとのこと。そういうのは分野に詳しくないと見えないくせ、論文を深く理解するには必須となってくるから、話を聞けたのは非常にありがたいことだった。

昼休みに入り混み合う直前の学食で昼食を摂り、近くの広場を散歩してからいったん解散。修論の英訳についてしばらく先生と話していた。

午後1時半から再開し、今度は自分の発表。修論の内容の説明だったが、前提知識から主定理までじっくりねっとり説明したら休憩を挟んで午後4時くらいまでかかった。発表順序もあまり考えていなかったせいで、ちょっと行き当たりばったりだったり手戻りが発生したりして反省。ただ最終的には必要なすべてのことを伝えきれたようで良かった。

その後の時間は修論の応用に関する議論に充てられた。自分が以前考えていた方針について取り上げたせいか、午前中学んだ話はほとんど出てこずちょっと失敗したなと思う。今日しか話せないことが他にあったのではないか。それはそれとして話は盛り上がりいつまでも続きそうな具合だったが、店を予約した時刻である午後6時が近づいてきたため切り上げた。少し遅れると店に連絡を入れ、地下鉄で移動。

店はいつもの武屋食堂。定食を頼むのではなく、一品ものをいくつか頼んでシェアする形式で注文した。また全員お酒を飲むようだったので自分も飲むことにした。さらば原付。飲み食いしたものは以下のツイートとそのツリーにまとめてある。

帰宅して午後9時20分からyukicoder 427に出た。

yukicoder contest 427 (ゲーム問題コンテスト) - yukicoder

Aは戦略も何もない。約数の個数の偶奇つまりNが平方数かどうか。Bは一つ目の敗北条件が気になって初手でi=1を選んだケースを考えたら、後手の戦略を盗むことで先手必勝であることに気づいた。ただしN=1のケースだけ後手勝ち。ところで一つ目の敗北条件に引っかかるのはN=1のケースのみだから別にいらなかったのではないかと思う。ただしその場合は常に先手必勝になるから、それを嫌ったのかもしれない。

Cはなかなか考えがまとまらなかった。-でない文字による連結成分が一つの場合を考え、おそらく各連結成分の両端の文字がどうなっているかが重要だとエスパー。それっぽく書いたら通った。Dは「互いに素でない」という関係で2\dots Nに辺を張ったときのNを含む連結成分のサイズが重要。N2より大きな素数でなければ2と連結で、そこからN/2より大きな素数以外すべてと繋げられる。

solved数を見てFへ。木の深さが1ならNimだから一般のケースも似たような感じだろうと思って考え、深さ偶数が無視できることに思い至って、それ以外の頂点によるNimという解法にたどり着いた。この考察には見覚えがある。そもそも問題自体既出だった気もする。

Eに戻った。Nの約数でない最小の数mを初手で選ぶことができれば先手勝ち。そうでない場合はmが持っていてNが持っていない素因数を見て云々……と判定していたが、そんなものはないため後手必勝。余計な場合分けをいろいろ入れていただけなので問題なく通った。

Gはまず四面体の体積を行列式に言い換える。操作はある行のA倍をどこかの行に追加するものだから行列式は変わらないと思ってしまったが、冷静になるとj=kのとき行列式A+1倍する操作になる。行列式の絶対値を\bmod{(6\times 101)}で持ってメモ化再帰した。手番が交互ではなかったり、A+1倍をA倍としていたり、行列式0の場合引き分けであることに気づかなかったりしてかなり手間取った。

全完7位。午後11時半からはECR164に出た。

Dashboard - Educational Codeforces Round 164 (Rated for Div. 2) - Codeforces

AはBobが連続する区間を選ばなければならないと勘違いしてタイムロス。さらに判定もミスってWAを出してしまった。Bはa_1に等しい要素の連続区間を一つ削除すればよい。Cは3桁の手計算によれば最上位桁と残りの桁で大小関係が逆になっているのが最適っぽい。同じ数字の桁を無視して考えることに注意。

Dはaから取り出した列bに対し\max(\sum b/2,\max b)valueとなる。\sum b\lt 10^4までは値に対して場合の数を持つdp、それ以降は\sum bの偶奇に対して場合の数と総和を持つdpを書いた。

Eはa_i\leftarrow\lceil a_i/k\rceilとするとk=1のケースに帰着できる。これは有名問題で、a_0とした上での\sum\max(a_i-a_{i-1},0)が答え。ところでこれをk一般に戻すと、区間[a_{i-1},a_i)に存在するkの倍数の個数となる。つまり、あらかじめこの区間をimos法で集計しておき、kの倍数それぞれに対して覆う区間の数を数えればよい。調和級数で愚直が十分高速。

Fはわからなかった。極大な1の連結成分とそのサイズ、個数をもとに重複を頑張って取り除くdpを考え、コンテスト終了後しばらく粘って一応サンプルを合わせることには成功したものの、実行時間が長すぎてお話にならなかった。5完52位。

www.youtube.com

なろうを読んで午前6時くらいに寝た。

04/13(土)

午後1時起床。少しなろうを読んで午後2時からUniversal Cupに参加した。28回目、Chengduセット。これがシーズン2の最終回となる。

https://qoj.ac/contest/1596

書く

食事して午後9時からABC349。

AtCoder Beginner Contest 349 - AtCoder

Aは問題名から解法がわかる。ただ零和ゲームを知らなければ難しいのではないかと感じた。Bは問題名の意図が分からないが言われたことを実装。Cもまあそのまま。Dはセグ木の区間の話をしていると分かればおしまい。ただしACLのような非再帰セグ木はノード番号のみで扱っているため、区間の復元を求められる今回はあまり使えなそう。再帰による実装が楽。

Eはちょっと気合いを入れて実装。FはMの素因数が高々13種類しかないので、素因数分解してどの素因数を必要なだけ持っているか考えればよい。状態数213のbitDPで、遷移もN個それぞれ行うのではなく213パターンに分類してから行うことで十分高速になる。M=1のとき空集合を数えてしまい1WA。

Gは文字の一致・不一致の条件をUFで表現する。Manacharを書き換えて実装すると張るべき辺の本数がO(N)になるため、あとは先頭から復元すればよい。AがManacharで得られる回文半径から1引いた値であることに気づいておらず少し手間取った。

全完9位。コードゴルフはAをNibbles、BをRaku、CをPerlで書いておいた。Aは2行目の総和を求め-1を掛けた。Auto Valuesを用いて2Bで、これが最短の符号反転。ただし今回はNから入力された数の総和を引くほうが短くなるらしい。2行目を抜き出す部分で1B差がついた。

www.youtube.com

午後11時半からはCF #939 div.2に出た。

Dashboard - Codeforces Round 939 (Div. 2) - Codeforces

Aはn=100でシミュレートした結果を見て答えた。こういう問題は難しかったはず、と思ってあんまり考えなかったが、難しいのは出ていく人の順番が関係する場合であって、実は最後に残る人だけなら1\dots a_1-1のみだとすぐわかる。

Bは各プレイヤー、自分が2枚持っているカードを優先的に出していく。その枚数を比較して互いに1枚ずつ持つカードがどちらの得点になるかも考えたが、そんなのは当然一致するに決まっていた。余計な場合分けでタイムロス。

Cはp=(1,\dots,n)としてn行目、n列目、n-1行目、n-1列目、……と操作していくとa_{i,j}=\max(i,j)が構築できる。最適っぽさがプンプンするので深く考えずにすぐ出した。その後考えてみたものの証明はよくわからなかった。

Dは長さL区間の値を全部Lにすることができる。操作を1点更新だと思い込んでいたが区間更新でも帰納的に示せて、この証明から構築も得られる。あとはどの区間を残すか全探索。操作回数は見積もっておらず、最後にL=18で確認して提出した。

Eは難しい。適当に見積もると、O(\sqrt{\max a})回くらい操作した時点で三つ連続して生き残ることはなくなるらしい。例えば0,x,y,zという連続部分列があると、tターン後にyが死んでいないならz\sum_{i=1}^t(y-ix)だけダメージを受けている。先頭が0でない場合は……知らないがそう大きくなることはないだろう。

とりあえずこれでE1は解ける。700回操作しておいた。E2については、zが2乗オーダーで減っていくのだからその次の値は3乗オーダーで減るだろうということで、O(\sqrt[3]{\max a})回操作することにした。これで最大連続三つとなり、zの生き死にについては上の式で判定できる。2000回操作してもassertで落ちたので見積もりをやり直したり四つ連続して生き残る間追加でループを回したりしたが、単純に実装ミスだった。

Fは領域に対して辺を張りたくなったので2次元セグ木を用いた区間辺を頑張って書いてみた。コンテスト後追加で1時間格闘し何とかサンプルは合わせたものの、当然のようにTLE。

E2までの6完で、他の人のE2が落ちまくったため11位。ただし間もなく自分のE2もuphackされた。2000回操作した後0を探してそこを起点に見ていったが、探す際にも操作を行わないとちょっとずれてしまう。E1は連続二つしか生き残らないため、そこをミスっていてもうまくいくようだ。

www.youtube.com

なろうを読みふけり、午前10時くらいに寝落ち。

04/14(日)

午後2時過ぎに起きてなろうを読んでいた。ここ数日は「最強魔法師の隠遁計画」を読み返していた。見せ場のシーンを覚えている限りで拾い読みしたが、どれも書籍版の描写に比べるとあっさりしている印象。やはり続刊が待ち遠しい……と思ってHJ文庫の新刊情報を見に行ったら、ちょうど5月に18巻が出るらしい。なんともタイミングの良い話だった。

https://ncode.syosetu.com/n5606cq/

firecross.jp

午後7時からは日記を書き始め、同時並行でラノベも開いた。「凶乱令嬢ニア・リストン」4巻を読了。3巻巻末の予告通り対魔獣・対人ともに大暴れ。侍女を隠れ蓑にしての行動だったため、主人公その人が注目を浴びるような描写は存在しなかったが、それでも無双による満足感はあった。魔獣狩りの描写がかなりスキップされていたのも、むしろ作業感が強くなくて良い。

午前6時半就寝。

週記(2024/04/01-2024/04/07)

04/01(月)

午後3時起床。半から定例会に参加した。

先週はミーティングをした。今週もミーティングをする予定。新年度なので、自分がどういうタスクに携わっているかも改めて軽く説明した。

勉強会はGrundy数の話。Sprague–Grundyの定理とその証明を改めて聞いて、自分がステートメントを勘違いしていたことに気づいた。通常のNimと同様に進め、相手がGrundy数を大きくしてきたら小さくする、という戦略を考えれば必敗盤面とXOR=0が対応することはすぐ納得できるが、定理の主張である「XORが全体のGrundy数になる」ことはより強い命題であった。

解散後は先週の週記を書いていたが、午後9時20分からのyukicoderエイプリルフールコンにうっかり参加してしまった。

yukicoder April Fool Contest 2024 - yukicoder

まずAを開いた。問題文が見えないが、お誕生日コン典型ということでページのソースに行ったら怪しげな文字列を発見。冒頭のdata:audio/mpeg;base64をググって、base64エンコードされた音声ファイルをでコードするWebページに辿り着き、無事問題文を「聴く」ことができた。なるほど問題名のListeningに納得。

Base64 to Audio | Base64 Decode | Base64 Converter | Base64

ところが、グラフの最大マッチングを求めよと言われてしまった。今の制約では無理そう。Library Checkerから高速な提出を窃盗してきたものの無事TLEしたため、いったん諦めてB問題に移った。

Bは最初のほうの問題なら解ける。A=3,B=23,C=180,D=-360,E=0,F=360,G=1,H=19,I=4。また「Wkh Fdhvdu flskhu」くらいまででググってみたらシーザー暗号がヒットしたため、復元してK=6も分かった。現在、式は次のようになっている。

\displaystyle f(n)=\frac{1}{\sqrt 5}\left(\left(\frac{6+\sqrt{\left\lfloor\frac{3\times(6J)^J}{J+19}\right\rfloor}}{L}\right)^{\frac{Jn}{4}}-\left(\frac{-\log_6(4\times(JL+1))}{1+\left(\frac{6^J}{180}\right)^{\sin\left(\frac{L+7}{6}\pi\right)}}\right)^n\right)

残り2問は解けなかったためエスパーで。まず、\sin( (L+7)\pi/6)の値がまともに扱える値になるのはL=2のときの-1L=4のときの-1/2のみである。次に\left\lfloor 3\times(4J)^J/(J+19)\right\rfloorJ=1,2,3,4でそれぞれ0,2^2\times 5,3\times 5\times 53,3\times 5^2\times 577。最後に\log_6(4\times(JL+1))を見ると、整数になるならJL+1=9より(J,L)=(2,4),(4,2)だろうと思える。

まあ6は\bmod 998244353における原始根なので、6^{\log_6 x}\equiv xという意味での\logは常に定義できないこともない。ただそれを用いたところで整合性のある計算結果になるかは知らないし、何よりその解釈を用いるとしても絶対に解決しなければならない問題が残っていることに気づいた。すでに決定した部分に現れる\sqrt 5は、\bmod 998244353において定義されない。

ということで、これをキャンセルするような形で同じく\sqrt 5がそこかしこに現れるだろうと考えた結果、(J,L)=(2,4)がちょうど良さそうに見えた。この時式は次のようになる。少し前の時点でさすがにフィボナッチ数列の一般項だろうなとは想像がついていたが、実際ここから有理化などを行うとピッタリ一致する。これでようやくACが取れた。

\displaystyle f(n)=\frac{1}{\sqrt 5}\left(\left(\frac{3+\sqrt 5}{2}\right)^{\frac{n}{2}}-\left(\frac{-2}{1+\sqrt 5}\right)^n\right)

次にsolved数を見てEへ。これは検索サイトがあることを知っていたので、ググって出てきたところで探した。

Aに戻って悩んでいたら急に閃いた。最大マッチングつまりmaximum matchingを求めろと聴こえたが、あれは実はmaximal matchingだったのではないか。この発想が降ってきた瞬間、あまりの「それらしさ」に正解を確信。貪欲を提出したら無事通った。かなり好きだったのでFavしておいた。

最後にC。3N回を超えて質問した場合のジャッジ結果が不定だから実は許してくれるんじゃないかと思ったが、普通にQLEが出てきてしまった。絶対にギャグだろうと思っていたので今度は初手で(1\dots N,1\dots N)を答えてみたところ、正解だった。

ABCEの4完で4位。Cは当てずっぽうでACを取ってしまったが、題意はインタラクティブの問題文に関する良い指摘だったと思う。まあアダプティブにおける「これまでの質問から回答が一意に定まらない場合WAとする」という注意書きは、それが判定できるという意味で解法のヒントになる可能性もあるから、なかなか難しい出題方式。

コンテストは午後11時くらいに離脱し、週記を書く作業に戻った。日付が変わる直前に投稿。読書記録ツイートもしておいた。3月頭まで没頭していたなろうは現在手が止まっているが、代わりにその期間チェックしていなかったハーメルンカクヨムの作品を読み漁ってしまっており、ネット小説を優先してしまっている現状は変わっていない。

椅子でしばらく寝落ちしてしまったので布団に移動し就寝。午前2時だった。

04/02(火)

午前4時半くらいに目を覚まし7時間ほどハーメルンを読んでいたらしい。二度寝して、午後3時に目覚ましで起床。明日の入学式のためクリーニング屋に預けたワイシャツを回収してくる必要がある。午後5時閉店なのでこの時間に目覚ましをかけていた。

シャワーを浴びて外出し、無事受け取りに成功。そのまま何もせず帰ってきた。帰り道に花見会場があったので出店で食事でもしようかと思ったが、先週母親が作ってきてくれた総菜がまだ残っているため止めておいた。桜はまだつぼみだった。

帰宅してから午前1時までずっとハーメルンを読んでいたが、重い腰を上げて修論の英訳を始めた。しかし午前4時にはもう眠くなってしまったため就寝。

04/03(水)

午前9時起床。シャワーを浴び、スーツを着て入学式に向かった。

着席完了時刻を過ぎてから到着したら保護者席に通された。式は特に何事もなく終了。退場後、その場で自撮りしてツイートした。

偶然会った同期の友人と近くにあったIKEAを練り歩いた。売り場で山積みになったサメの抱き枕を発見し、買うかどうかかなり迷った。昼食は中のレストラン。見ていたのが会員価格だったらしく、思ったより高くついてびっくりした。

ABC345優勝賞品のアマギフ10万円が届き、ついに残高100万円を突破した。一度超えてみたかった壁だったので達成感がある。有効期限は短いものでもあと8年以上あるので、消費について考えるのはまだ後回しにできるなと思っている。

寝るまでずっと修論の英訳作業をしていた。午前2時就寝。

04/04(木)

午前7時半起床。修論の英訳を続け、正午くらいに一段落させて先生に送り付けた。ページ数稼ぎの内容を全部削除したらかなり短くなった。

シャワーを浴びて原付で登校。微妙に暑かったので、普段Tシャツの上からパーカー、さらにウィンドブレーカーを着ていたところ、パーカーを外してみたのだが、教室での体温調節ができなくて大変だった。パーカーは着ないとしても持っておいたほうがよさそう。行き帰りについてはこれで特に問題なかった。

学食で昼食を摂って午後1時からセミナー。昨年度オンラインで参加してくれた学生がついに進学・引っ越ししてきたので、彼も交えて今後しばらくの予定を決めた。その後1時間半ほど自分が発表。3週間前に準備してきたものを話したが、内容を忘れかけておりかなりたどたどしい感じになってしまった。最後に修論の英訳についてダメ出しがあった。

午後4時からは数学専攻のガイダンス。ほとんどが就職の話だった。

終了後は同期数人と割り振られた博士の院生室を探検した。全体的に埃っぽいし散らかっている。大量の漫画とコスプレAVを見つけたので、前者は修士の院生室に持っていき誰でも読める状態にしておいた。以前からの居住者もいるが、漫画の年代的にその人たちの持ち物ではないだろう。

学食で夕食を摂り、午後7時帰宅。TLを見たりしてダラダラ過ごしつつ何とかシャワーを浴び、午後10時半に寝た。

04/05(金)

午前5時半起床。

ハーメルンで「カードゲームで世界が滅ぶ世界に転生してカードショップを開店したら、周囲から前作主人公だと思われている」を読了した。ランキング上位に駆け上がってきた作品だけあって非常に面白かった。前作主人公という単語を筆頭にメタ的な発言が多いが、そういう世界観が主人公の超然としたあり方を後押ししている。周りのキャラから見た主人公パートもしっかり用意されていて嬉しかった。

syosetu.org

その後、ハーメルンを読んだり正午から3時間ほど二度寝したりしているうち、午後5時になったので1時間ほどミーティングに参加した。

先週生えたタスクは、現状のものを大幅に改革しないとあまり意味がなさそうだったので、別部署に任せることになった。人間同士のやり取りで使われるExcelファイルをプログラムで読むのは難しい。特に吹き出しなどのオブジェクトは、視覚的には分かりやすいのかもしれないがそもそも対応していないライブラリも多く、手も足も出ない。別のタスクを生やしてもらい、しばらくそちらに向けて調整することになった。

いくらか調べ物をした後、ゲーセンに行くため外出。大学近くの交差点を通りかかったらちょうど部活終わりの集団がいたのか自転車がたくさん走っており、春の訪れを感じた。

まず大戸屋で夕食を摂った。ちょっと多すぎた。大戸屋のセットメニューは単品の量を変えずに組み合わせてくるから注意が必要。

ゲーセンでは閉店まで16クレプレイした。一生終わらない新曲埋め。大型アップデートからこちらポゼッションを復活させられない。成果としては「Longinus」のAJが出た。調べて気づいたが14.9の初AJらしい。精度も非常に良くて嬉しい。延々続く分割トリルは必死にジタバタしたら通っただけで、あんまり押せた気はしない。

日付が変わったくらいで帰宅。結構な時間YouTubeを眺めながらボーっとしてしまったが、気合いを入れてシャワーを浴び、午前4時に寝た。

04/06(土)

午前9時半起床。ずっとハーメルンを読みふけっていた。午後2時を前に布団から這い出し、Universal Cup 27回目、Indiaセットに出た。

https://qoj.ac/contest/1586

書く:UC

Twitterのアカウント登録から11年が経ったらしい。当時は意識するはずもなかったが、登録したのはたまたま13歳という規約ギリギリの年齢だったようだ。設定された誕生日と照らし合わせたとき違反しているアカウントには容赦なくロックがかかると結構前に話題になった。そのときに自分も確認して胸をなでおろしたことを覚えている。

午後9時からABC348。

Toyota Programming Contest 2024#4(AtCoder Beginner Contest 348) - AtCoder

Aはなぜペナルティキックが題材なのかよくわからないがやるだけ。Bもよい。Cは最大と最小で混乱しそうになったので問題文をガン見しながら実装。Dは適当にDijkstra……と思ったら同じマスから何度も遷移する可能性があることに気づいた。正解は薬同士の距離をO(NHW)かけて求めてN頂点のBFS。コードをかなり書き直すことになって大幅にタイムロスした。

Eは全方位木dpで計算できる。根をずらしたときの差分と考えたほうが簡単だったらしい。パスグラフで答えが2.5e18くらいになることに気づかず、答えの初期値を1e18にしており1WA。Fはしばらく考えても分からなかったもののO(N^2M)を書いてpragmaで最適化をかけたら爆速になった。730msとまあまあ余裕をもってAC。

Gは解けなかった。\max Bを固定したときの答えがkに対して上に凸となるから、その折れ線複数の最大値を取るとして、傾きの集合の変化を追えばよいのではないかと考えたりしていた。このG問題がなんと100人に通されており、6完119位。久しぶりにABCで3桁順位を取ってしまった。

書く:G

Gのupsolveをしていたら振り返りが間に合わなかった。録画を続行し、午後11時半からCGR25。久しぶりのGlobal Roundである。

Dashboard - Codeforces Global Round 25 - Codeforces

書く:CF

2コンテストぶっ続け、7時間弱という長さの動画を投稿した。

www.youtube.com

ノクターンノベルズを読んだり日記を書いたりして午前11時就寝。

04/07(日)

午後5時に目覚ましで起床。いざAHC……と思ったら2時間早かった。寝なおすつもりがうっかりハーメルンに没頭。午後7時から、改めてAHC032に参加した。

AtCoder Heuristic Contest 032 - AtCoder

書く:AHC

「リィンカーネーションダービー ‐新人トレーナーがんばる‐」を読了。ウマ娘の二次創作において総合評価トップの作品である。昔から存在は認識していたが、あんまり勝てなくて辛そうな雰囲気のあらすじだったため敬遠していた。しかし読んでみると、確かに最序盤は負けっぱなしで苦しいところがあるものの、すぐにとんでもない実績を積み上げていくようになった。ただしそこまで読んだころにはもうストーリーやレース描写に引き込まれ、勝敗に関わらず面白いと思うようになっていた。レースやその前後のシーンが毎度毎度感動的で涙をこらえられない。

出走馬をかなり史実に寄せたらしく、ネームドウマ娘であっても容赦なく故障で休養に入っていくのがなかなか寂しいところ。そのためか競い合う相手が固定されていて、レースごとの展開の差異は少なかった印象がある。そのうえ主人公チームのウマ娘でも容赦なく負けさせるから、最後まで結果がどうなるかわからず毎回ドキドキしていた。

スマートファルコンの様子がおかしいという描写が中盤くらいから存在して、そのことには気づけたものの、どういう感情に由来するものなのか他人の感想を読むまで理解できなかったのが残念。これは原作を知らないせいだろう。教えてもらえてラッキーくらいに思っておきたい。ハーメルンの感想欄はBadが多いものが非表示になるので安心して読むことができる。

syosetu.org

日付が変わったくらいで寝落ち。

週記(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時就寝。

週記(2024/03/18-2024/03/24)

03/18(月)

午後2時半起床。寝る前に勉強会スライドをホスフィンに送り付けておいたらコメントが貰えたので、それに沿って仕上げの微調整を行った。

午後3時半からインターン先定例会。先週はミーティングして機械学習を回した。学習は完了しているのだが結果をあまり真面目に見ていないので、今週はそれをチェックしたい。ただ数値的には残念ながら以前より微妙に悪化してしまった。そんなことは途中経過から明らかだったので、とっとと停止して次の実験を回すべきだったのかもしれない。

午後5時ちょっと前から発表者として勉強会開始。結構気合いを入れてスライドを作ったため、話し終えるまで1時間ほどかかった。コンテストの動画を撮るのとあまり変わらない感覚で喋っていたが、出席者がリアルタイムで聴いている今回は倍速もスキップもできないのだから、発表時間が長くなりすぎないよう気を使うべきだった。

その後質疑応答。2次元セグメント木の説明はスライド2枚では足りなかったらしく、質問が来た。考えれば考えるほど自明な拡張だという気持ちになってしまいあっさり流してしまったのだが、発表で初めて触れる方のことを考えていなかった。

また遅延の解消について、18ページ目では解消できない話をしつつ28ページ目では解消しなくてよいと言っている食い違いの指摘もあった。気づいていなかった。遅延・遅延の解消という概念は1次元セグメント木にしか存在し得ない概念だと思っているのだが、2次元の説明にその言葉を使おうとして無理が出たのだろう。

解散後にスライドを公開した。

勉強会0318.pdf - Google ドライブ

それから夜中まで先週の週記を書いていた。毎週、週末から次週月曜日にかけて慌てて書いている週記だが、先週はその時間を勉強会準備に充ててしまったため未だスカスカ。結局穴あきの酷い状態で投稿した。

追記しようとは思ったものの眠気が強くて動けない。少しPCの前で粘ってみたがどうにもならなかったので、素直に布団に入った。午前1時半就寝。

03/19(火)

午前7時半に目を覚まし、ハーメルンで溜めていた更新を読みふけっていた。午後1時になって二度寝

午後4時半に目覚ましで起きて、午後5時からCF #935 div.3に出た。

Dashboard - Codeforces Round 935 (Div. 3) - Codeforces

書く:CF

www.youtube.com

食事した後は朝読んでいた更新分を最新話まで追い、続けざまに同じ原作の別作品を読み返し始めてしまった。日付が変わったくらいで寝落ち。

更新分を読んでいたのは「貴方は中央トレセン学園から追放されることを希望しています。」で、読み返していたのは「【完結】閃光と隼と風神の駆ける夢」。

syosetu.org

syosetu.org

03/20(水)

午前6時前に目を覚まして読み返しの続き。といってもさすがに最初から読んでいくほど理性を失ってしまったわけではなく、クライマックスであるドバイワールドカップデーのみだったため、今日2時間を溶かしたところで無事一段落つけることができた。

身を起こして先週の週記への追記を始めた。昼食会と家飲みについてとっとと書いてしまいたいのだが、しゃぶしゃぶの感想を書くところで完全に筆が止まってしまった。メインである肉の印象が残っていない……!あれこれ考えても文章が出てこなかったので、結局コンテストの感想をいくつか書き足しただけで今日は終わりにし、午後4時過ぎに布団に戻って二度寝した。

午後8時半起床。午後9時からyukicoder 422に出た。普段と違う曜日、時間帯。

yukicoder contest 422 (第1回 競技プログラミング講習会作問企画コンテスト) - yukicoder

書く:yukicoder

午後11時半からはCodechef Starters 126に出た。

https://www.codechef.com/START126A

書く:CC

食事してから久しぶりに小説を開き、朝までかけて「アルゴリズムの乙女たち」を読了した。最近界隈で話題になっていた競プロ小説である。徳間文庫というレーベルごと新刊チェックから漏れており、慌てて先週買ってきた。

自分は競プロを完全に個人の趣味、もっと言えば個人で完結した趣味だと思っており、それを通した人間関係の描写全般にあまり納得できなかった。……ストーリーを真っ向から否定するような感想になってしまった。強いこだわりのある物事をテーマにした小説はそのこだわりが邪魔をしてまともに評価できない、ということであとは細かい描写の話をいくつかするだけにしたい。

プログラムの動作を説明する際「判定させる」「出力させる」のように使役の形で書いていたのが目についた。自分はどちらも「~する」で書く。コーディングをパズルに見立てるのは、自分にも実感のあることだから感心した。夏合宿の間コンテストに出ていないのは良くない。実際のコンテストに勝る精進は存在しない。

ところで、個人戦なのか団体戦なのかよくわからないルールの大会だったが、もし競プロがeスポーツとして市民権を得られたなら決勝のルールは盛り上がるだろうなと思った。40分一問の勝負はレート差が勝敗に直結しにくい。自分も2700に届いていないくらいの頃、似たルールでACRushさんに勝った経験がある。

1対1のトーナメントがある。短い時間で1問解いて、点数が高いほうが勝つ。僕は16位なので、初回の相手は1位のACRushさんだ。

週記(2020/09/21-2020/09/27) - kotatsugameの日記

そういえば、チラッと出てきた問題に照明とスイッチを扱うものがあってびっくりした。自分が昔書いた短編で扱った問題と共通している。偶然だろう、と言っておくが、何分小説という分野においては狭い界隈だから、もしかしたら?なんて気持ちもある。もしそうなら光栄な話だ。

#執筆応援PJ21Sep #競技プログラミング 眠らないビル - こたつがめの小説 - pixiv

布団に移動してハーメルンをいくつか読んだ。

「気付いたら赤木しげるの娘だったんですが、」の現在進行中の章が完結した。これまで何度もエタりそうになりつつ、しぶとく更新が続けられている。かなり好みの作品であるため非常にありがたい。この先も気長に待ちたい。ついでに同作者の新連載である「星天」を読んだ。まだ2話しかないのでこれから。

syosetu.org

syosetu.org

「愉悦ってる奴が実は最強なのをやりたい!」を読んだ。5話でエタっている。続いたとして読んだかどうか……タイトルには同意するところだが主人公がメスガキなのはあまり好きではない。

syosetu.org

午前11時就寝。

03/21(木)

午後3時前に起床し、1時間の1on1に臨んだ。

これからやることの相談。もしかしたら触ったことのない技術を使って何かツールを作ることになるかもしれない。競プロerはそういうの得意ですよ、みたいな言説をよく聞くし自分も信じているが、いざそういう状況に当事者として直面すると少しは不安を覚える。技術的に可能かどうかと仕事としてできるかどうかは全く異なる話。

解散した後はとっとと布団に戻ってハーメルンを開いた。「最速×無敵=驀進王」を読了。「今日も楽しく安価だ!」という主人公があり得ないくらい強い作品と同作者だから、今作も強いだろう。今のところ実際にそうである。描写があっさり目なのは引き続いての難点。

syosetu.org

午後6時から4時間寝て、2時間起きてハーメルンを読み、2時間半寝た。

午前6時頃に「転生チートトレーナーはモブウマ娘を三冠にできるのか。」を読了。主人公がトレーナーとしてチームを率い、GⅠを総ナメにしていく話が好み。ウマ娘主人公だと、どんなにチート設定でも最初にクラシック三冠かトリプルティアラか選んだりして出走しないレースが存在しがち。その壁を破壊したのは、自分が覚えているのだと上でも挙げた「今日も楽しく安価だ!」くらいだろうか。

syosetu.org

シャワーを浴びた後しばらくラノベを読んで、午前9時くらいにさあ寝ようかとしたのだが、結局スマホハーメルンに没頭し続けてしまった。午後2時頃、今の時間から寝ると今週やるべきだったことが何もできないままになってしまうことに危機感を覚えて外出した。

大学に駐めたままになっていた原付を回収し、その足でクリーニングに出していたスーツを回収したり給油したりして、いったん帰宅。今度は購買に行ってラノベを受け取り帰ってきた。スーツに関しては学位記授与式が来週火曜日にあって、今日受け取っておかないとまずかった。

雨が降ってきてしまったため、原付は大学に置き去りにして地下鉄で帰る。

週記(2024/03/11-2024/03/17) - kotatsugameの日記

クリーニング屋にスーツを出した

週記(2024/03/11-2024/03/17) - kotatsugameの日記

午後4時半くらいに就寝。

03/22(金)

午後9時起床。20分後からyukicoder 423に出た。

yukicoder contest 423 (Asakatsu Presents 3) - yukicoder

書く:yukicoder

今日はあさかつメンバーによるコンテストの第三回で、第二回と同様コンテストの様子の撮影を頼まれていた。振り返りまで終えた後すぐアップロードしたものの、動画処理に時間がかかり公開は直後のCFが終わってからとなった。

www.youtube.com

午後11時半からCF #936 div.2。

Dashboard - Codeforces Round 936 (Div. 2) - Codeforces

書く:CF div.2

www.youtube.com

ハーメルンで「キラキラの一等星」を読了。シンボリルドルフの一個下という年代で目新しい。学年とレースとの関係がかなりしっかり設定されており、それによれば中等部一年生はまだトレーナーの下につくことすらできないらしい。その期間も丁寧に描き、さあこれから、というところでエタりかけており残念。

syosetu.org

ラノベ「玄関前で顔の良すぎるダウナー系美少女を拾ったら」を読了。ヒロインが主人公に惹かれた理由も、ヒロインの家庭問題も、まだ何一つ具体的に描かれていない。ヒロインの考えが読めず、終盤までどんな裏があるのかひやひやしながら読んでいた。ラストシーンを読んだ今は裏があっても悪いことにはならないだろうと思えている。家庭問題についても、どうやら親とのすれ違いらしいからそのうち円満に解決されるだろう。

ラノベの新刊チェックを行い29冊注文。その後別のラノベを開いて読み進め、午前10時半に寝た。

03/23(土)

午後2時前に起床。Universal Cup 26回目、Latin Americaセットに出た。

https://qoj.ac/contest/1576

書く:UC

食事してシャワーを浴び、午後9時からABC346に参加。

UNIQUE VISION Programming Contest 2024 Spring(AtCoder Beginner Contest 346) - AtCoder

書く:ABC

www.youtube.com

明日はDDCC本戦のため朝早くに起きる必要がある。とっとと布団に入り、寝る……前にラノベ「物語に一切関係ないタイプの強キャラに転生しました」を読み切った。

少し前にTwitterで、面白くない作品に対する「知らない作品の二次創作」という評価を目にした。到底人の心があるとは思えない表現に恐れおののいたものだが、正直に言うと今、このラノベに対する言葉としてちょうどいいと思ってしまった。それも、字面の意味そのままではなく、悪評であるという背景も込めた上で。

例えばゲーム・アニメの悪役に転生するラノベが最近多い。それらも確かに知らない作品の二次創作ではあるものの、だからといって面白くないとは決めつけられない。しかしこの作品は残念ながら面白くなかった。原作を破壊しないよう主人公たちと距離を置くという点では他作品と変わらない。しかしその上で他作品の悪役たちは、自身の境遇を良くするため、などと自主的にいろいろ行動していた。一方この作品では主人公が無気力なように見える。面白くなかった理由が本当にこれで正しいかわからないが、振り返ってそう思った。

日付が変わったくらいで無事就寝。

03/24(日)

午前5時起床。

書く:DDCC

日付が変わる前に帰宅。しばらく日記を書いていたが、どうにも眠かったため布団に入った。午前4時過ぎ就寝。

週記(2024/03/11-2024/03/17)

03/11(月)

午後3時過ぎ起床。半からインターン先定例会に参加した。

先週話に出たミーティングは1週間何も音沙汰がなかったのだが、3月中にやりたいですと言ったらいつの間にか自分が関係者に連絡を取ることになっていた。自分の認識ではトップダウンで動いてくれるという話だったはず。ただ、お手間をおかけすることになって気が引けていたからむしろありがたいことなのかもしれない。先延ばしにしてしまうのを避けるべく、すぐさま連絡の文面を練って定例会後に送信した。

勉強会はChatGPTを組み込んだゲームの話とVRChatでアバターにプログラムを仕込む話。後者はプログラムを書くために用意されているわけではない機能を使ってプログラムを書くという点でEsolangと似たようなものを感じないこともない。

さて、来週の勉強会は自分が発表者である。テーマはいまだ未定。困ったら研究の話をしようと思っていたのだが、面白そうでも理解できていない話と理解できているけど面白さを伝える自信のない話しかない。困った。

3月中旬に勉強会の発表をさせてもらうようお願いした。

週記(2024/02/05-2024/02/11) - kotatsugameの日記

ABC344の飛び賞が当たって5000円ゲットした。どうやら3か月ぶりの賞金らしい。最近全然勝てなくて困っている。

週記を書いて午後11時過ぎに投稿。半からCF #933 div.3に出た。

Dashboard - Codeforces Round 933 (Div. 3) - Codeforces

Aは頑張って問題文を読んでいたら最後の一行にまとめてあってがっくり。やるだけ。Bは左から順に貪欲に操作するのが正当。Cは末尾がppimma、それ以外であるという5状態でdpを書いたが、冷静になると1文字削除するごとにmappiemapieのどれかを破壊できるのでカウントするだけだった。Dはこれまたやるだけでなぜこの位置にあるのか不明。

Eは1行ごとに最適化すればよい。貰うdpをセグ木で書く。Fはa_{i+1}-a_iが最大のところに挟む形でないと改善されない。答えを二分探索しても変わらず置ける範囲は区間一つで表現できるため、尺取り法によって線形時間でチェックできる。

Gは改札を出入りするイメージで路線ごとに超頂点を用意するテク。最初は入ってきた辺の色も持つ拡張dijkstraを考えていたが、次数の2乗にならない実装が面倒だった。よく考えたらこれも超頂点を用意するのと同じ感じで特別な色を用意すれば対処できる。

全完20位だったがopen hacking phaseでGがポコポコ落ちて15位になっていた。

www.youtube.com

しばらくグダグダしていたが、本来そのような暇はない。明日の家飲みに向けて部屋をきれいにする必要がある。重い腰を上げ、コロコロや濡れ布巾を用いて2時間ほど念入りに掃除した。終盤は朝になっていたので掃除機もかけた。

シャワーを浴びて午前6時半。睡眠時間が足りないのになぜかすんなり眠れず、布団で30分ほどハーメルンを眺めてから寝落ちした。

03/12(火)

午前10時半起床。着替えて外出し、ゴミを出したりクリーニング屋にスーツを出したりATMでお金を下ろしたりしながら、昼食会の店に向かった。予約の午前11時半には少し遅れた。

学位記授与式のため実家に置いてあったスーツ一式を送ってもらった

週記(2024/02/26-2024/03/03) - kotatsugameの日記

今日は焼肉「仔虎」。前回行ったのはクリスロード店で、今回は国分町店に来た。この店舗ではしゃぶしゃぶが食べられる。

書く:1130-1330

ドンキに寄って買い物をしつつ帰宅。満腹すぎておつまみはポテチ1袋とアーモンドチョコレート1箱だけしか買わなかった。

書く:家飲み

03/13(水)

何度かの覚醒を挟みながら午後11時まで寝ていた。二日酔いではなく単なる寝不足で、気分は悪くなく頭痛もない。朝に目を覚ましたときは家飲み翌日とは思えないくらい快調で良い一日になることを確信したものだが、眠気には勝てなかった。

部屋の片づけを終えるとちょうど半になったので、1分強遅れつつCodechef Starters 125に参加した。

https://www.codechef.com/START125A

BILMはK1の数以上なら全部削除するべきで、そうでなければ前から0に変えていって最初に出現する1をできるだけ後ろにするべき。BGMEはA=2に対して操作するのが損なので、まずA=1を交互に取った後は全部A=2になるまでポイントは変化しない。全部A=2にした側が総取りする。

ATBOはまず、操作で総和が変わらないことに気づいた。累積和を取ってみると一つ間を開けたswapになっている。これが分かれば判定は簡単。累積和の最後の項は弄れないことに注意。MNXRは面倒。点(X,Y)から見て左上、右上、右下、左下の四つの長方形に分割して求めた。一つの長方形について求める関数を気合いで作り、4回呼び出す。

ARLRはなかなか面白い。基本的には出現する数の種類数がbeautyとなるが、ある値xの出現が必ずx-1,x,x-1という形になっていた場合のみそのxをカウントできない。カウントできない列の数はxに依らず、行列累乗で求まる。すべての列に対する種類数の総和は、逆にそれぞれの数が出現する列を数えることにすれば直ちにM\times(M^N-(M-1)^N)とわかる。写像12相を考えている時間が少しあった。

PRBWは面倒。矩形が交差しないらしいので、あらかじめ全部列挙して平面走査することで包含関係を木構造として表現できる。このときクエリ1は部分木に対する更新となるため、オイラーツアーをしておくことで区間クエリに書き換えられる。あとは遅延セグ木でOK。解法は自明だが手数が多くて大変だった。

最終問題のACが最後まで一人のみで、単独全完の一位。出遅れたかと思ったがATBO、ARLRでもFAだったらしい。余った時間で下のdivision向けの問題も解いておいた。

勉強会のテーマを思いついた。先週のUniversal Cupで2次元遅延セグメント木が欲しくなったのだが、チームメイトに聞いたら知られていないどころか存在しないことがほぼ確信されていると言われてひっくり返ったのだった。これについて発表することにし、朝まで調べものをしていた。

その後作業を二つ。まず03/18までだった博士課程の入学手続きを行った。修士のときもそうだった記憶があるが、提出物と言いつつGoogle Formに入力するだけのものが多い。振り込みが必要なものは起きてから済ませ、物理的に提出するものについては金曜日にセミナーで大学に行ったときついでに片づけてくることにしよう。郵送は面倒。

学生証用の顔写真もGoogle Form経由での提出だったが、これだけ期限が早めに設定されていてびっくりした。03/15までと書いてあったのでギリギリセーフ……かと思いきや「03/15(水)」と書いてあって様子がおかしい。今年のその日は金曜日である。おそらく昨年のままになってしまっているのだろう。正確な期限がわからないため間に合ったのかどうか不明。

次にMHCの賞金受け取りの手続きを行った。以前作業してから3か月経っても届かないので不思議に思っていたが、確認したところ賞金受け取り方法の設定が反映されていなかった。改めてPayPalを指定したところ、30分も経たずに入金されてびっくり。

今年からHackerOneというバグバウンティプラットフォームを使用するとのこと。アカウントを作ってW-8BENを書いたら終わりだった。PayPal経由で受け取る設定にしておいた。

週記(2023/12/11-2023/12/17) - kotatsugameの日記

もうしばらく調べ物を続けてから午前10時就寝。

03/14(木)

正午過ぎ起床。半から1時間ほど、月曜日にセッティングしたミーティングに参加していた。

普段の1on1とは異なる方との打ち合わせで、今後やるべきことを探っていく。ほんの少しだけ聞くことの準備をしておいたので必要最低限の情報は得られたかと思う。エクセルマクロを使っていると聞いたので衝動的にプログラムで置き換えることを考えたが、VBA以上にエクセルファイルを十全に扱えるプログラミング言語など存在し得ないのだから、置き換えたところで差異に苦しむだけだと気づいた。

外出する前に久しぶりに機械学習を回しておこうと思ったら環境が古くなっていて、バージョンアップに時間を取られた。CUDAドライバーを入れなおすところから始めたが何事もなく完了して一安心。以前適当に入れたらUbuntuが起動しなくなったので戦々恐々としていた。

改めてコードを動かしたところ警告が出て、lr_schedulerのverboseオプションが廃止されたことを知った。まあ勝手に標準出力に出されてもプログラム中でログを取るときには意味がなかったから、分かる。

Deprecated verbose parameter in LR schedulers by thomasjpfan · Pull Request #111302 · pytorch/pytorch · GitHub

そうこうしているうちに午後5時を過ぎ郵便局の窓口が閉まってしまったが、振り込みはATMでも可能。外出してまずそれを完了した後、駅の券売機で今週末と来週末の新幹線の切符を買った。週末パスは学割より安いしみどりの窓口に並ばなくても買える。しかし実際買ってみると思ったより高くて不安。これを解消したいがため、これまで頑なに窓口で買っていたのだった。

行きはともかく帰りはARCのことを考えて選ぶ必要があった。ARC前に帰宅するのは不可能だから車内から出るとして、どの時間なら良いかと調べていたら、完璧な列車を見つけた。ARC開始直前に東京を出て終了直後に仙台に着く。指定席の料金をかけてはやぶさではなくやまびこに乗るのは抵抗があるが、絶対に席を確保しなければならないため必要経費である。

本を買ったりつけ麺を食べたりしてからゲーセンに行き、10クレプレイ。新曲埋めで理論値を三つ出した。ドンキに寄って午後10時前に帰宅。

朝方までセミナー準備をしていた。2週間何もやっていないが前回の準備が丸々残っているからセミナーはできるだろうと思っていたところ、先生からのメールを確認すると論文のまだ読めていない箇所についての説明を求められていたので、慌ててそこの準備をした。本当は修論の英訳もしなければならないのだが手付かず。

何とか終わらせて満足したため、2次元データ構造に関する調べものを再開。ウェーブレット行列を用いた実装は通常の圧縮と比べると二分探索が回避できて定数倍速いためよく使われるらしい。実装を眺めていたら取得する値域として[0,u)のみならず[d,u)にも対応できることに気づいたため、Nyaanさんのライブラリを窃盗して書いてみた。これで逆元のない演算に対してもセグ木の代役を任せられる。

data-structure-2d/fenwick-tree-on-wavelet-matrix.hpp | Nyaan’s Library

https://judge.yosupo.jp/submission/196856

しばらく日記を書いて布団に入った後、なぜかハーメルンを開いてほぼ1作丸々読み返してしまった。午前9時就寝。

syosetu.org

03/15(金)

午後1時起床。30分ほど布団でウネウネしてから原付で登校し、進学書類の提出と昼食を済ませた。

午後2時から2時間セミナー。読んできた論文については自分の修論とそれほど関係ないということが分かった時点で後回しになり、今後の研究について延々話し合いをしていた。あとはさっさと修論の英訳をせよとのこと。これに関しては自分でやると宣言したのにやっていないので、かなりまずい。

思いのほか早く終わったので院生室を覗いたら同期の友人がいて、夜まで研究のことなど話していた。その後学食に行ったら普段別の棟にいる整数論の人々を発見し、そちらの院生室にお邪魔することに。置いてあったボドゲから「語彙の王様」を2戦ほどプレイした。文字数制限のある状態で語彙を捻り出すのはかなり難しい。7文字以上という縛りは長くて大変なように見えて、当たり判定が広いからむしろ簡単に感じられた。

遊んでいるうちに雨が降ってきてしまったため、原付は大学に置き去りにして地下鉄で帰る。午後9時に帰宅してyukicoder 421に出た。名古屋大学プログラミングコンテストとのことだからせっかくなので録画もしてみた。

yukicoder contest 421 (NUPC2023) - yukicoder

Aはランレングス圧縮かと思ったがそうではない。ともかく全部列挙してソートしておく。後から、12のどちらを先に列挙するかそれぞれで調整することで、ソートされた順序で得られることを確かめた。

BはA全体とある空でない真部分集合の総XORをそれぞれ0にできればよい。前者を判定した後、後者については基底がN-2本以下かをチェックすると分かる。N-1本だとちょうど0になるような選び方が空集合と全体集合の二通りしか存在できないから。

Cは操作の逆順にdpするとO(NM)。Dはひたすら場合分け。1頂点や2頂点しかないグラフが凶悪だが、一発で合わせることができてよかった。EはKMAを設置する点の候補が高々8N個しかないため、全部列挙して一つずつbitDPの遷移に使う。

Fは根付き木にして各頂点に対し子の悪天候度の総和を持たせるとクエリ1に対する答えがほとんどパス上の和になる。HLDで実装。Gは誤読して、先手が頂点をいくつでも選べるという問題をしばらく解いていた。勘違いに気づいてみると全方位木dpやるだけ。Hは選んだ頂点の周りに長さ2のパスがあると塗れる頂点が全然減らない。それを4本持つ十字を重ねて繋げたらうまくいった。

Gで失速してしまい速度的には3位だが、yukicoderスコアでは優勝していた。

www.youtube.com

午後11時半からはECR163に出た。

Dashboard - Educational Codeforces Round 163 (Rated for Div. 2) - Codeforces

Aはnが偶数のとき作れる。構築はAABBAA...という感じ。Bは先頭から貪欲に操作するかしないか選ぶのが正当。CはBFS。Dは長さを決めると文字列の前半になれる位置がわかるため線形時間で存在判定ができる。よって長さを全探索。

Eは連続する番号の頂点に連続する値を割り当ててクリークを作るのが良い。手でいくらか試していたら1,2,3,4,5,64,5,6,1,2,3を割り当てる感じのパターンでk頂点のクリークまで作れることを発見した。これをプログラム中で生成して適当にずらせばよい。

Fはかなり時間がかかってしまった。最終的にはFPSを経由して解法に辿り着いたが後からもっとシンプルな考え方に気づいた。銀のコインの価値を区間内なら(0,1)区間外なら(0,-1)として計算したい。ここで(0,-1)ではなく(-1,0)と見ると単に-1するだけになるというもの。区間の内外に関する差が定数となったため、最初に確率分布を求めておけば適当な範囲の和が答えになる。

GでO(3^n)系の解法に固執してしまい解けず、6完28位。Fは区間内の銀のコインをX枚、区間外の銀のコインをY枚としたとき\binom{X}{i+a}\binom{Y}{i}i任意、aをある値以上とした和が求まればよい。これを\binom{X}{i+a}\binom{Y}{Y-i}と見ることでiに関する和を取ったものが\binom{X+Y}{a+Y}になり、自分の解法と合流するらしい。このテクニックを完全に忘れていた。Gはマッチングを最小点カバーに言い換え、最小とは限らない点カバーを全探索すれば良かったようだ。盲点。

www.youtube.com

ノクターンノベルズで1作読んだ。「転生したので美少女幼馴染を俺好みに育てます」。時間の進みがかなり速い。幼少期が一瞬で終わったのはありがたいが、高校生時代も同じスピードで終わってしまったのは、入学式とその後のシーンが好みだっただけに残念だった。好みだった理由にはR18であることは関係しないから、そういうものはなろうで読めということかもしれない。

https://novel18.syosetu.com/n3854iq/

シャワーを浴びてから勉強会のスライド作成を始めた。午前11時過ぎ就寝。

03/16(土)

午後8時半起床。午後9時からABC345に出た。

Monoxer Programming Contest 2024(AtCoder Beginner Contest 345) - AtCoder

書く:ABC

www.youtube.com

午後11時半からはCF #934 div.1に出た。

Dashboard - Codeforces Round 934 (Div. 1) - Codeforces

書く:CF

www.youtube.com

食事してシャワーを浴び、午前5時過ぎ就寝。明日はUTPCのため朝から東京に行く。

03/17(日)

書く:UTPC

週記(2024/03/04-2024/03/10)

03/04(月)

午前3時半に目を覚ました。この時間だと日曜日の延長戦のような感覚。今すぐ布団から出てインターンの稼働をするか、それともちゃんと寝て月曜日の朝から始めるか……と迷いながらなろうを読んでいたら、いつの間にか午後3時になっていた。話が好みすぎて止められなかった。

流石に起きて一瞬だけ作業。半から定例会に参加した。進捗報告でこの30分の内容について喋ったら、今後についてミーティングが入りそうな雰囲気になった。流石に進捗が悪すぎたかと思ったが、それよりは難しそうなポイントがあったと報告したからだろう。ちゃんと調査すればパターンを見いだせるのかもしれないので、適当なことを言ってしまった可能性がある。

勉強会はGJKアルゴリズムという凸多面体の衝突判定の話。ミンコフスキー差を使うらしい。ミンコフスキー和と言えば競プロでもたまに聞く言葉で、2次元なら辺を混ぜて偏角ソートすることで得られるという事実が有名。ただ高次元では使えないわけで、このアルゴリズムにおけるアプローチは全く異なり新鮮だった。

先週のDDCC予選は無事通過できたようで、本戦参加の案内が届いていた。前回2022年は24卒、前々回2021年は22卒として交通費が支給されたが、今年は就活枠に入らないため行くなら2020年以来の自費となる。まあせっかくだし行くことにした。これで03/17のUTPCに続き2週連続で東京に行くことになった。

その後はひたすら週記を書き続け、日付が変わる前に投稿。さらにいくらか追記してCF div.1以外を埋めた。午前2時就寝。

03/05(火)

朝方1時間ちょっとなろうを読んでいた記録がある。次に目覚めたのは午後2時半で、なろうを読んでいたら午後6時を回っていた。

お腹が空いたので外食することにした。ゲーセンに行くつもりはないので、川内キャンパスから見て仙台駅に向かうのではなく大学病院の方に行ってみる。この方面は普段足を運ばないが、距離も近いし飲食店もそこそこあるということを知っていた。今日はその中から「臥龍梅」という中華料理屋を選択。

三色麻婆豆腐の定食セットとマンゴーシャーベットを注文した。三色というのは写真の左から順に黒、白、赤で、赤が最も辛い。ところが何を聞き間違えたか黒が最も辛いと思っており、赤から食べてあまりの辛さに絶望していた。

味は大変美味しかった。特に黒と赤は辛さに負けないしょっぱさがあり、ご飯が進む。マンゴーシャーベットも非常に濃厚。というわけで全体的に味が濃かったのだが、定食セットに付いてきたスープまでしょっぱいのは勘弁してほしかった。

スーパーでパン類を買って帰宅。布団に戻ってしばらくなろうを読み、午後8時過ぎから3時間ほどは寝ていた。起きて午後11時半からCF #932 div.2。

Dashboard - Codeforces Round 932 (Div. 2) - Codeforces

Aは操作1を1回行うと回文になるので2回以上は行わなくてよい。s+\mathrm{rev}(s)が損であるため答えはs\mathrm{rev}(s)+sのうち小さい方である。Bは分割できれば各区間のMEXは全体のMEXと一致するため2分割のみ考えればよい。仕切りを入れられる最左と最右を求める。

Cはbの昇順に並べるのが得。これまで取った個数を持つO(n^2)状態のdpで、最初の1個を取るときだけ-bし、最後の1個を取るときだけ+bすればよい。

Dはx+y\in sy-x\in sをそれぞれ数え、両方の条件を満たすものを引く。y-x=s_iかつx+y=s_jとなるなら(2x,2y)=(s_j-s_i,s_i+s_j)であり、i\le jかつs_is_jの偶奇が等しければ0\le x\le y\le cを満たす。

Eは、実はc\lt yなるインデックスが高々一つとなる解が存在する。c\lt yならあるbitがcでは降りてyでは立っているので、それ以下のbitをcで全部立てるのが得となり、これが2箇所で行われているなら食い違うbitが下位である方をc=yとしても損しないから。クエリに対してはyのどのbitを下ろしてcを作るか全探索した。

Fをチンタラやっていたら間に合わず5完19位。その後12分追加して通った。部分木に対し、頂点の組(u,u+1)であってその部分木の内外にあるものを持ち、マージテクで管理していく。答えを求める部分が難しくて、普通の木dpのように部分木を一つずつ追加していく方法だと追加用の辺が用意できるとは限らず失敗する。いったん子の部分木について全部計算した上で、UFを管理しながらくっつけていく必要があった。

www.youtube.com

布団に入って朝方までなろうを読んでいた。完全にそのまま寝落ちする構えだったが、今日のうちにシャワーを浴びておくと明日行動しやすいだろうと考え、気合いを入れて起き上がった。

しかしシャワーを浴びて布団に戻ったらすっかり眠気が消え失せていた。またなろうを読んで、午前11時半になってようやく就寝。

03/06(水)

午後6時半に目を覚ました。昨日の時点では外出しようと考えていたが、まだ微妙に眠いので止めた。布団で2時間ほどなろうを読んでいたら寝落ち。

次に起きたのは午後11時半少し前。今日も何もせず終わってしまうのはまずいと考え、ちょうど開始直前だったCodechef Starters 124に参加した。

https://www.codechef.com/START124A

書く:CC+E

疲れて布団に戻ってしまった。なろうに没頭。最近自分好みの展開が続いていて非常に面白く、ずっと読んでいる。

ただ何事にも終わりというのはあるもので、2947話から始まる「はるかな過去編」が主人公不在のストーリーであることが発覚した。主人公の無双が好きで読んでいる部分が大きいためこれは結構辛い。どこまで続くのか知りたくて先のほうを確認したところ、なんと開始から丸一年、366話経過した最新話でも未だにこの章が進行中であることに気づいた。非常に苦しい。

ところでこのストーリーの伏線が以前にあったのを覚えている。探したら1848話だった。そんな昔からプロットを組んでいるという点には素直に感嘆する。もっと前から予告されているのに一向に回収されないイベントも多いのは、壮大な物語だと言えばいいのか、風呂敷を広げすぎだと言えばいいのか。

https://ncode.syosetu.com/n5534co/1848/

10時間以上読み耽って午後1時頃寝落ち。

03/07(木)

午後10時起床。ここ三日間寝るかなろうを読むかしかしていない。コンテストに出れば流れで何か作業できるかと思っていたが、毎回すぐ布団に戻ってしまった。

ホスフィンからそろそろ会食+家飲みをしようと誘いが来ていたので、相談して店と日付を決めた。来週火曜日。

TUPCのテスター作業をした後日記を書き、午前8時くらいに布団へ。2時間ほどなろうを読んでから寝た。ついに3000話に到達した。

03/08(金)

午後3時起床。今日は博士課程進学手続きの書類を取りに大学へ行き、流れで外出が必要なタスクをいくつかこなしてくる。

雪が残っているため山への往復は地下鉄。窓口で書類を受け取りに来たと伝えたら、何も言わないうちから自分のものが出てきた。顔を覚えられているらしく学生証による本人確認もなかった。事務室にはほとんど顔を出したことがなかったためびっくり。

次に川内キャンパスに移動。東京に行くための学割を受け取り、閉店間際の購買でラノベを受け取り、散髪まで行った。

帰宅して進学手続きの書類を開封してみると合格通知書が入っていた。進学試験の際は先生から口頭で伝えられたのみだったから、後から精査して不合格になることがあるんじゃないかと疑う気持ちがあった。こうやって紙になって届き、ようやく合格に確信が持てた。よかった。

シャワーを浴びた後、ホスフィンから提案された家飲み用のお酒をAmazonで購入。ついでに、以前注文したペペロンチーノソースが一向に発送されない件を調べていたところ、商品がリニューアルされていたことに気づいたので、新しいものを追加で買っておいた。以前の注文はキャンセルしようとしたら調整料金云々の警告が出たので放置。まあペペロンチーノソースなんていくらあっても問題ない。発送できるものならしてくるがよい。

ほしえぬ パスタソース ペペロンチーノ(パキッテ) | 業務用商品 | キユーピー

しばらくTLを眺めて過ごし、午後9時からyukicoder 420。

yukicoder contest 420 - yukicoder

yukicoder

今週は研究関連のことを何もしていない。やらなければならないことはまだあるが、今も立ち向かう気力が湧かなかった。モジモジしているうちに時間が過ぎていく。明日はTUPC本番で朝も早いから、諦めてとっとと寝ることにした。

午前3時に布団に入った。しかし何を考えたかうっかりハーメルンを開いてしまう。結局2時間以上経ってから寝た。

03/09(土)

午前9時に目を覚ました。まだ2時間ほど寝ていられたはずが、なろうを読んでしまっておシャカになった。ぼんやりした頭で午前11時半ごろ布団を脱出。開場の正午まで時間がなかったので慌てて家を出た。

書く:TUPC

午後8時半過ぎ、コンビニに寄りつつ帰宅。急いで録画の準備を整え午後9時からABC344に参加した。

Toyota Programming Contest 2024#3(AtCoder Beginner Contest 344) - AtCoder

書く:ABC

www.youtube.com

午前0時からUniversal Cupに参加した。TUPCのためこの時間にずらしてもらった。今日は25回目、Shenzhenセット。

https://qoj.ac/contest/1540

書く:UC

TUPCの参加記を書こうとしていたが恐ろしいほど捗らなかった。午後0時半までだらだら続けて就寝。

03/10(日)

午後8時起床。食事して午後9時からARC173に出た。

AtCoder Regular Contest 173 - AtCoder

書く:ARC

www.youtube.com

金曜日にAmazonで注文した商品が届いていた。ペペロンチーノソースはリニューアル前のものの空き箱があったので、並べてパシャリ。重量が5g減ったわけだが、栄養成分の差としてはエネルギー44kcal、脂質4.9gらしい。食塩相当量は据え置きである。

引用RTで、ちょうど油が5g減ったような変化だと指摘されていた。そういえば脂質が9kcal/gであることは家庭科の教科書に書いてあったか。類似の知識に炭水化物が4kcal/gであることがあり、こちらは飴の栄養成分表示を見ると実感できる。

朝方までインターンの作業をしていた。インターン用PCがUbuntuのためエクセルファイルを扱う作業ではExcel互換ソフトのLibreOffice Calcを用いているが、これはセルを線や点で塗りつぶすパターンを表現できないらしく、勝手にRGB値をずらした一面塗りつぶしで代用してしまう。そのせいでプログラムで読み取った値とソフト上の値が一致せずしばらく困っていた。ファイルをWindowsに持ってきて発覚した。

インターン先から届いたパソコンのセットアップを済ませることにした。起動してみるとWindows単体が入っていたので、Ubuntuとのデュアルブートにする。

週記(2021/09/13-2021/09/19) - kotatsugameの日記

新春TCBの賞品が届いていた。自分は板タブを選択。すでに持っていたものより安価なので正直あまり期待していなかったが、ツルツルしていてペンが動かしやすく自分好みだった。以前のものは紙の書き味を再現した点が値段に表れていたのだろう。自分には再現していないほうが合っていたという話。

VEIKK Creator Pop S640 Pen Tablet & Digital Drawing Art Tablet

駅前のヨドバシカメラで板タブを購入。

週記(2022/05/02-2022/05/08) - kotatsugameの日記

布団に入ってなろうを読み、午前11時半就寝。木曜日に3000話に到達したと言ったが、正確には3000「部分」とでも呼ぶべきで、タイトルにあるナンバリングでは今読んでいたところが第3000話となっている。実は何度かミスでずれているため、真の3000話ともまた誤差がある。

今週はなろうを3018話まで読んだ。一週間で400話というのはかなり速いペースだが、代わりに週の前半が溶け消えてしまい、先週言っていた「週七日きちんと活動する」という目標を達成するどころの話ではなかった。一方今読んでいるところが正直言ってあまり興味を惹かれないため、週の後半は目に見えてペースが落ちた。というかほとんど読んでいない。このままフェードアウトかもしれない。