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

07/01(月)

午後3時起床。少しだけインターン関連で調べ物をして、半から定例会に出席した。進捗報告では調べている内容について述べた。

勉強会は「同時手番ゲーム」の話。プレイヤーが同時に行動するだけで完全情報ゲームでなくなるというのは、言われてみれば当たり前だが意識したことがなかった。具体的なゲームとして、最近テレビ番組で企画されたらしい「電気椅子ゲーム」が紹介された。勝ち・負けのゼロサムゲームという扱いだったが、よく聞くと勝ち方によって賞金額が変わるらしい。そこを突き詰めたら戦略はどう変わるのだろうか。

先週のラノベ取り違えの件で、解散後に大学生協に行った。正しいラノベを購入し、預けてあった間違えて買ったラノベも引き取って、これにて解決。他の客に迷惑をかけるようなことがなくてよかった。

学食で「にんにく油そば」を食べた。前から気になっていてようやく出会えた期間限定メニューだが、タレが少ないため素の中華麺の味が目立ち、美味しくなかった。

帰宅後は先週の週記を書き進め、日付が変わる前に投稿。直後に6月の読書記録をまとめてツイートした。先月は頑張って読んでいたし、買った本も少なかったので、久しぶりに積読の増分が負となった。調べたら2022年11月以来だったようだ。ただ買った本が少なかったのは、6月末に発売されたラノベをまだ注文していないから。よって7月分にしわ寄せが行く。

しばらく週記に追記した後、ラノベの新刊チェックを行った。KADOKAWA関係の出版社のサイトは落ちているし、hontoだとなぜか発売前の新刊が登録されていないしで、内容を知るには一冊一冊個別に調べるしかないかもと億劫になっていたが、Amazonであらすじを読むことができた。6月末から7月末にかけて発売される本を中心に合計37冊を予約・注文。先週間違えて買った「俺は義妹に嘘をつく」2巻についても、1巻を注文しておいた。

そのままの勢いで、以前から気になっていた書画カメラをAmazonで注文した。撮影範囲の十分な広さ、カメラの十分な高さを追い求めると3万円弱する製品に行きつき、下手にケチって失敗するよりはと思ってそれに決めた。やはり店頭で実物が見られないのは不便。まあ買ったのだし後は届いてからのお楽しみ。木曜日到着予定なので、今週末のコンテストから使えるだろう。

ヨドバシカメラには書画カメラを探しに来た。これは主に本などの紙資料を映すカメラで、競プロ動画の手元撮影にも便利そう。ただタイピングしたり手計算したりするだけの高さが確保できるか気になるので、実物を見に来たのだ。しかし残念ながら取り扱いがなかった。

週記(2024/06/17-2024/06/23) - kotatsugameの日記

TCB 2024/05回3位の商品でアマギフ2000円分が届いていた。

ハーメルンを開いたら、昔読んだ作品に1年ぶりの更新が来ていた。書籍化するらしい。タイトルをよく見たら、先ほどの新刊チェックで買うか迷って止めたラノベだった。ハーメルンで読んだ当時の評価は「微妙」だったから、買わなくて正解だったようだ。当時も今もタイトルで説明される設定に惹かれていた。そのあたりの好みはずっと変わっていない。

シャワーを浴びて少し論文に手を加え、ラノベを読んで午前10時半就寝。

07/02(火)

午後7時起床。ちょっと作業して先生からのメールに返信し、ゲーセンに行くため外出した。

立ち食いそばを食べ、午後8時過ぎから閉店までで19クレプレイ。バージョンアップで追加された新曲を埋めていた。バージョンアップの前後でレートが17.03→16.92と激減しておりびっくりした。よく覚えていないが直前に「sølips」を連奏していた気がしないでもないから、その定数変動が原因だろう。

新しいイベントのチュウニズムクエストが8キャラ合計で108Lv.とあまりに果てしないので、EXPストックチケットを使ってみた。wiki曰くEXP+70ptとのことで、どのくらい上昇するのかよくわかっていなかったが、なんと初めて使ったキャラが一撃でLv.最大まで成長し唖然。

ラーメンを食べ、日付が変わってから帰宅。疲れて床に横たわったらそのまま2時間ほど寝ていたらしい。

目を覚ましてからは朝までかけてハーメルンの「四葉真夜と七草弘一の子供(非公式)ってハード過ぎない⁉︎」とその番外編を読了した。達也・深雪の見せ場を食ってしまうチートオリ主だが、「彼らを目立たせないように」という理由が用意されていたためか全く気にならず、純粋に活躍を楽しむことができた。面白い。

syosetu.org

syosetu.org

シャワーを浴びてしばらくセミナー準備をした後、今度はラノベを読了。「ただの村人の僕が、三百年前の暴君皇子に転生してしまいました」。

悪役に転生……というより憑依するタイプの話では、急に温厚になってもそれまで粗暴に振る舞ってきた事実は消えないという考えから、憑依前後の性格の激変がどうしても気になってしまう。この作品では、憑依前の評判を笠に着て使用人に圧力をかけ、皇宮での立場を確保するシーンがあって、なかなかいいなと思った。しかしこんな行動はそれっきりで、あとはナヨナヨした性格の主人公が残り残念。また、せっかく歴史を書き換えているのに婚約者を敵キャラに取られる正史がちょくちょく挟まれるのも好きではない。

ABC359の総合4位・学生3位の賞品でアマギフ40000円分が届いた。月曜日に書画カメラに使ったお金が3割増しで戻ってきた。

正午くらいに就寝。

07/03(水)

午後7時前に起床。今日はサークルの活動日。今からバチャに参加するつもりはないが、ICPC国内予選直前なので定例会自体には顔を出しておくべきだろうと考え、家を出た。学食で食事してから教室に向かい、バチャが終わったタイミングを見計らって話に混ざった。幸い特に困っていることはなさそう。

午後8時過ぎに帰宅。セミナー準備を完了させたらちょうど午後11時過ぎだったので、半からCodechef Starters 141に出た。

https://www.codechef.com/START141A

書く、DE upsolve

ラノベ「ただの村人の僕が、三百年前の暴君皇子に転生してしまいました」2巻を読了。学園編開幕。相変わらず評判は悪いままなので、交流がほとんど広がらない。それだけなら孤高という感じで良いが、「僕には君さえいれば……」と言わんばかりにずっと婚約者とイチャイチャしているのは気に食わなかった。孤高に過ごすならもっとストイックなキャラが好み。正史において婚約者を娶る敵キャラは、ずいぶん手ごわい雰囲気を出していたものの、急転直下の展開で早々に退場し驚いた。

シャワーを浴びて少しだけ日記を書き、午前8時過ぎ就寝。

07/04(木)

午後0時半起床。原付で登校し、購買でパンを買って教室に向かった。

午後1時半からセミナー。まず最近の数値計算の結果について報告し、1時間ほど議論した。その後通常の発表へ。時間が残り少ないので手短にと思っていたものの、結局全部説明してしまうし、さらに今日は黒板の使い方も下手くそだった。重要な式を書いて、それを参照しながら説明しようとしたのだが、式が思ったより長くて黒板の「上半分」を占拠してしまうような形に。周りの空きスペースでちまちま計算したり板書したりするのは良くなかった。

解散後は院生室に寄り、オープンキャンパスで発表する内容について聞いていた。グリーン・タオの定理を実演するため、長さを指定して素数列からその長さの等差数列を見つけてくるプログラムを書きたいらしい。素数の列挙は簡単だが等差数列の発見はおそらく難しく、そこがボトルネックとなって小さい範囲でしか計算できないだろうと伝えた。

学食には行かず午後6時くらいに帰宅。荷物を下ろして身軽になると再度登校し、川内の大学生協ラノベを受け取った。今度こそ学食で食事して帰宅。

Amazonから書画カメラが届いていた。撮影範囲は微妙に足りないかもしれない。高さは十分。

グダグダとネットサーフィンで時間を浪費してしまったが、気合いを入れてシャワーを浴び、午後10時からYouTubeで配信を行った。新しいカメラを使ってみる。

www.youtube.com

配信ではUC Semifinals直後で参加しなかったCF #954 div.3を解いた。

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

Aは中央値。もちろん全探索してもよい。Bは数値の大小関係が逆転しないので、四方の値の最大値までデクリメントすることになる。Cはindの重複を除いてソートし、そこにcの文字を順に入れていく。Dは演算子を入れない位置を全探索して数列に直し、dp。

Eは\bmod kで分類し、ソートして隣り合う要素をペアにする。分類して奇数個あったグループものについてはどれを残すか全探索。Fはコンテスト当時のTLで解法を見てしまったが、それがなくてもさすがに解けたとは思う。2辺連結成分分解すれば終わり。

Gは難しめ。(i,p_i)というペアに直し、\gcd(i,p_i)で割って互いに素にしておく。ペアの順序対( (a,b),(c,d) )であってa\mid dかつc\mid bなるものを数える。aを固定すると、a\mid dなら元の数列でもa\mid pが成立するため、(c,d)の個数は高々N/a個。k=1\dots N/cについて\mathrm{arr}[kc]\leftarrow\mathrm{arr}[kc]+1としておくと\mathrm{arr}[b]が求める数になっている。

そのまま出すとTLEした。c=1が大量に発生するとまずいようだ。倍数のカウント時に同じcをまとめて置いたらG1は171ms、そのままG2に投げてみたら2608msで通った。計算量の保証はないような気がしている。

配信後、気になった点の改善を行った。まずカメラの小刻みにズームを繰り返す挙動については、OBSで焦点の自動調整をオフにしてみた。また振り返り時に使うホワイトボードアプリとして、おすすめされたMicrosoft Whiteboardを入れてみた。WordやExcelのようにマイクロソフトのアカウント名が丸見えになるかと思ったらそんなことはなく、非常にいい感じ。

第五回日本最強プログラマー学生選手権の案内が来ていたので、後泊用のホテルを取った。土曜夜だからめちゃくちゃ高い。クレカ払いなら1割ほど安くなるらしく、確か以前親のクレカを使わせてもらったこともあるが、今回はもういいやと思って割高の値段で予約を入れた。

ラノベ「推しにささげるダンジョングルメ」2巻を読了。1巻に引き続いてのダンジョングルメ要素に加え、この巻ではダンジョン動画を投稿し、そのあまりの超越者っぷりで世間の度肝を抜いた。これらのシーンは非常に好みで面白かった。一方、主人公の金持ちアピールに関する些細な描写だが、TCGの絶版パックを買い集めて剥こうとするのが好きになれなかった。ポンと不動産を購入するのはむしろ爽快だったので、おそらく取り返しがつかないのが嫌だったのだと思う。

そういえば、この巻には特典小説の読めるリンクがついている。KADOKAWAのサイトが落ちているのにどうするんだろうと思いながらQRコードを読み込んだら、カクヨムの下書き共有ページに飛ばされた。なかなか頑張っている。

すぐには眠れず、布団に転がってスマホを触っていた。午前9時くらいにようやく寝落ち。明日は夕方からICPC国内予選である。

07/05(金)

サークルとしての集合時刻は午後2時ということで、午後1時から2時にかけて15分おきに目覚ましをかけていたが、毎回二度寝してしまい無事貫通。目を覚ますと午後2時40分くらいだった。まあコーチとしての仕事はコンテスト開始直後の問題文配布くらいしかないので、それまでに到着できればOKという説もある。学食で昼食を摂ってからゆっくり向かった。

午後3時半くらいに会場に到着。皆リハーサルを終え、コンテスト前の微妙な時間を過ごしていた。自分のアイコンを掲げているチームが2チームあって動揺。

選手とはそれほど話さず、もう一人のコーチ・milkcoffeeさんや監督員になってくださったサークル顧問の先生とコンテスト開始直後の問題文印刷について打ち合わせをした後は、じっと座って待っていた。午後4時半にコンテスト開始。部屋を歩き回って問題文を配り切ったらお役御免である。

コンテスト中は持ってきた本を読もうと考えていたが、問題文が公開されたら自然と考え始めてしまい、結局1ページも進まなかった。

書く

コンテスト後しばらくして解散。サークル全体での打ち上げとしては後日BBQを企画するらしい。それとは別に今日、残っていた8人で飲みに行くことになった。自分は原付で登校したので、いったん自宅に戻って置いてきた。

会計はうっかり完全割り勘になってしまった。ここはコーチが多めに出すべきところ。BBQの際は忘れないようにしよう。まだゲーセンが開いていたので駆け込みで2クレだけプレイし、帰宅。

シャワーを浴びた後は数値計算を回していた。午前4時くらいにうっかりPCの前で少し寝てしまい、今日はもう無理だろうということで布団に移動したが、ゴロゴロしていたら目が覚めてきたのでまたPCの前に戻って作業を続けた。午前9時くらいに計算結果をまとめ終えてメールで送信。布団に戻ってラノベを開いた。

社畜剣聖、配信者になる」2巻を読了。相変わらずギャグテイストで軽く読める。ひょうきんな新キャラも、主人公が常にスーツ姿なことに関する設定も良かった。主人公の力の底が見えない。ホイホイ読み進めていたらギルドを設立したりヒロイン3人を全員娶ったりしてびっくりした。

正午、就寝。

07/06(土)

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

Denso Create Programming Contest 2024(AtCoder Beginner Contest 361) - AtCoder

AはK=0がないのが嬉しい。入力をそのまま出力しつつ、適切な箇所でXを挟む。Bは次元ごとに分解してチェック。問題文を真面目に読むのは難しかったので雰囲気で解釈した。ちなみに、コンテスト中は問題名からrが抜け「Intesection of Cuboids」になっていたが、この日記を書いている月曜日に確認したら直っていた。

Cはほぼ自明。N-K個残すと考えると扱いやすいかも。Dは適当に探索。馬鹿正直にbit表現に直してしまったが、文字列のまま持ってもよいくらいの状態数だったようだ。Eはドドドドドドドドドドドドドドドド典型。Fはb=2,\dots,59に対し\lfloor N^{1/b}\rfloor-1を求め、約数包除して最後にx=1を足す。b-th rootは二分探索。ライブラリを拾ってこようか迷いつつも頑張って書いた。

Gは石の連結成分を見ても平面走査しても実装が爆発しそう。しかし順位表を確認するともう全完が出ている。簡単な方法があると信じて考えたら良い方針が見つかった。石のない領域を横幅1の長方形で区切ると、その数は合計で[tex;O(N+\max X)]になるから、連結性をUFで管理し外と非連結なものだけ取り出す。平面走査の走査しない版とでも言えるだろうか。

39分でノーペナ全完、5位。上に日本人学生がちょうど3人いたため賞品の逆ボーダーとなってしまった。4位との時間差はかなり大きいのでどうしようもない。今後のABCは分かっている限り賞品がすべて飛び賞になっている。もしかしたらこれが最後の順位賞だったかもしれないと思うと非常に残念。

コードゴルフはCまでNibblesで解いておいた。AとCは負け。入力が2行あるとき、プログラムの最初に;;$を置いてImplicit Opsによるfoldl1を発動し、@$でアクセスするのが短いようだ。これまでもたまに負けているのを見たことがある。今日のAとCの最短コードは両方このテクが使われていた。

Tutorial: Minutiae

www.youtube.com

相変わらずカメラが小刻みにズームを繰り返している。公式のソフトを入れたりしていろいろ試してみたものの、結局この挙動を抑制するのは無理そうという結論に至った。またカメラの周囲についた照明も、反射が強くて白飛びしてしまうか、露出補正でプラマイゼロになってしまうかであまり役に立たなかった。いろいろ残念。ただしカメラの接続が安定しており、アーム付きであるという点だけでも非常にやりやすくはなった。

本を読んでいた。「父娘のおいしい食卓」を読了。面白かった。父が輸入食品の凄腕バイヤーであるという設定に惹かれて購入したので、その有能さがたっぷり描かれていて嬉しかった。また娘がかなりしっかり者で、父とのすれ違いにおいてもわがままを原因とするなどの理不尽な点がなく読みやすかった。父と娘がバランス良く双方向に歩み寄っているところが良い。

食事した後、新しいラノベを開く前に寝落ちしたようだ。午前5時頃。

07/07(日)

正午くらいに目を覚ました。今日のコンテストは夜中にCFがあるのみなので、二度寝せずゲーセンに行こうと考え、とりあえずシャワーを浴びた。しかしまだゲーセンに行くには早い気がしたのでラノベを開いた。

「一生働きたくない俺が、クラスメイトの大人気アイドルに懐かれたら」6巻を読了。面白かった。体調を崩した主人公をヒロインたちが順番に看病する話をメインに、前後をちょっとしたイベントで埋めた、トラブルも何もないひたすら甘い巻。ラストでは、前から予告していた武道館ライブを待たずして主人公とヒロインたちの関係について結論が出た。といってもまだくっつかないことを決めたという意味。ハーレム展開は続けば続くだけおいしいので、素直に嬉しい。今後も楽しみ。

そういえば、5巻を読んだときに以下のような心配をしていた。結局6巻は4か月で出たし、あとがきの締めの言葉も「また次巻で~」になっていたので、ひとまずは安心してよさそう。

あとがきを読むと6巻の刊行が確定していないような書き方で、4巻と5巻の間もちょっと長かったし心配。5巻まで出ていてそんなことあるか?続きが読めることを願う。

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

午後5時を回ってしまった。本当はあと1、2時間早く出たかったが過ぎてしまったものはしょうがない。地下鉄で街に出て、まず大戸屋で夕食を摂った。夕食時でも思いのほか空いていて助かる。

午後7時から3時間半ほどゲーセンにいて、22クレプレイした。まだまだ新曲埋めは終わらない。

「熱異常」の初プレイで1落ちが出た。譜面は確認していたし、tatyamさんが初見理論値を出したリザルトも見ていたので、ワンチャンあるのではと思ったが、やはりラストが難しい。この後10回以上プレイしてみても、理論値通過は1回あったかなかったか。残念ながら今日は揃わず。ちなみにまだ14の理論値は持っていない。

「ヒュブリスの頂に聳えるのは」のAJが出た。火曜日帰り際に2連続で1-0が出るも時間切れ。金曜日はボロボロだったから初日だけ上手いやつかと思ったが、何とか出てくれた。ただし赤が10個くらい増えてしまった。

8キャラ合計108Lv.を要求するチュウニズムクエストが一つ終わった。ちなみに現在進行中のイベントはもう二つあり、片方は同じく8キャラ合計108Lv.で07/17まで、もう片方は6キャラ合計87Lv.で08/07まで。前者を諦めてしまおうかとも考えたが、とりあえず進めてみている。

午後11時過ぎ、急ぎ足で帰宅。ササッとシャワーを浴びて半からCF #956 div.2に出た。

Dashboard - Codeforces Round 956 (Div. 2) and ByteRace 2024 - Codeforces

Aはギャグで、a_j:=j。Bは2x2の操作だけでよいので左上から操作して全部0にできるか見た。行和\bmod 3・列和\bmod 3が不変量だったらしい。Cは3人の区間の順番を全探索。左の人は条件を満たす最も短いprefixを取るべきで、右も同様にし、真ん中の人が条件を満たせるかチェックする。Dは幅1のみなら転倒数の偶奇で、一般のケースでも任意のswapが奇数回の幅1のswapに帰着できることから正当。

Eはボールに書かれた値の平均値を取っておき、specialかそうでないかだけで区別する。specialでないボールが出現する度手番が交代することから、どのタイミングで取ればどちらの得点になるかが一意。先手が何個specialなボールを取るか全探索し、そのようなシチュエーションの確率を重複組み合わせで求めた。

Fは解を二分探索。rを固定するとlが減少するにつれvalueも減少するので、二分探索で決めた閾値を下回るタイミングのll_rとおく。するとl_rl_{r-1}と一致するか、あるいはa_r\oplus a_iとのXORが閾値を下回る最大のi\lt r。後者はbinary trieを1点更新区間MINのセグ木っぽく使うことで求まる。O(n(\log a)^2)

Gは間に合わず6完12位。コンテスト後にしばらく格闘して通した。

a_{p_i}\oplus iは高々19bit。そこで下位B:=10bitと上位19-Bbitに分けて求めることにした。下位については2^B状態持って根からの累積和っぽいことをすると求まる。メモリが足りないので、取得する値をあらかじめ列挙し、累積和自体は同じ配列を書き換え続ける。上位はk=B\dots 18についてパスを長さ2^k区間に分割し、akbit目の累積和を見ながら算数した。

下位パートは累積和がO(n2^B)、取得がO(q)。上位パートはそれぞれのkについて累積和がO(n)、取得がO(q\times n/2^k)となり合計でもO(nq/2^B)LCAの計算などで生配列を使うようにしたら、2936msで通った。

www.youtube.com

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