週記(2024/06/10-2024/06/16)

06/10(月)

午後3時起床。半からインターン先定例会に出席した。先週もほぼ進捗はなく、ポツポツと連絡を取っているくらい。

勉強会はGoogle検索のランキングアルゴリズムについてだった。そういえばSEO対策ではページの表示が速いのもポイントの一つらしいが、最近のアニメ公式サイトはどれも過剰にグラフィカルで、その観点からは良くなさそう。ただ考えてみると、そういうサイトへのアクセス経路は作品名を直接検索するとかどこかの広告から飛んでくるのがメインだろうから、ずれたワードの検索結果で上位に来る必要はないのかもしれない。

解散後大学生協に行き、ラノベ受け取りと夕食を済ませた。帰宅してからはずっと先週の週記を書き進め、日付が変わる直前に投稿。相変わらず週末のあたりは穴だらけでスカスカ。

先月の家飲みで余ったほろよいを開け、ラノベを読み始めた。

明日は数学科の友人を自宅に招いて遊ぶ予定。

週記(2024/05/20-2024/05/26) - kotatsugameの日記

「美少女フィギュアのお医者さんは青春を治せるか」を読了。非常に面白かった。クリエイターをメインに据えた話は「Vのガワの裏ガワ」あたりから注目しているジャンルで、これもその一環として買ったが、期待以上のものだった。実のところ、主人公が創作のトラウマと向き合うストーリー展開については特に思うところがないかもしれない。それでも間違いなく面白かったと言えるくらいキャラクターがどストライクだった。

もう一冊読もうとしたが、酔いが回り非常に眠い。椅子で寝そうになったので慌てて布団に倒れこんだ。午前5時半ごろだった。

06/11(火)

午後1時半起床。布団でハーメルンの「身長2m28cmの大男、平成元年の日本に転生する」を読了した。転生特典の高身長を活かしてバスケで活躍する話。もう一つの特典としてイケメンにしてもらっているが、設定としてどう生きてくるのかわからない。他の作品だと、話の途中でしれっと「顔が良い」程度に言及されるだけのことが多い気がする。

syosetu.org

布団に横たわったままラノベを読んでいたら夕方になった。シャワーを浴びて原付で学食に行こうとしたら、原付に鍵が入らない。よく見ると鍵の先のほうがほんの少し圧し潰されたようになっていた。そういえば原付にこびりついた鳥のフンを鍵の先でこそげ落とした記憶がある。「鍵ってそれだけで変形してしまうのか」「ほんのちょっとの変形でも入らなくなるのか」という二つの驚きがあった。仕方なくスペアの鍵を使って出発。

鍵の潰れて出っ張った部分を削ればまた使えるようになるのではと思い、大学の駐輪場に転がっていた石に擦り付けてみることにした。数分ほど格闘すると見事スムーズに入るようになったため、帰りは元の鍵を使えた。

帰宅してラノベ。「あんたで日常を彩りたい」を読了した。これもクリエイター系の話。主人公がアートの天才と関わっていく話と言えばいくつか思い当たるものはあるが、この作品では主人公にはアートに対する熱意も目標もなく、結果その苦悩も他の作品とは異なり才能の比較には由来しなかった。まあその独自性が面白かったかというと別の話になってしまう。

昨日今日とクリエイターを題材にしたラノベを読んだ。しかしその系統は、才能に焦点が当たるか当たらないかという点で全く異なる。考えてみれば当たらないほうが特殊だろう。昨日は「Vのガワの裏ガワ」と「美少女フィギュアのお医者さんは青春を治せるか」を同じ扱いにしたが、ストーリーに一致する点は見出せず、ただキャラが好みだった点が共通している。単に設定として好きなだけらしい。

もう一冊読み進め、午後11時半からはCF #952 div.4に出た。

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

Aはよい。Bは真面目に考える必要はなく愚直での全探索が可能。Cは最大値と和を持てば判定できる。Dは円に含まれるマスの座標の平均値が中心。Eは二つの軸を全探索。Fは典型的な二分探索。Gはknの計算で繰り上がりが発生してはいけない。つまりnに出現する数字がすべて9/k以下であればよい。H1は操作を全探索して繋がる連結成分を数えることができる。

H2にはかなり手間取った。選ぶ行を決め打ったとき、それぞれの列についてそこを選んだ時に連結成分のサイズがどれだけ増えるかを一気に求めたい。行を選ばない状態から初めて、選んだ行によってキャンセルされる分を適切に処理できればよいが、これは各連結成分について関係する列が区間をなすことから区間ADDで可能。遅延セグ木を使えば最大値の取得も可能になって解けた。

全完、H1までが速かったのか6位。H2は各連結成分についてどの行を、またはどの列を選んだら答えに加算されるか考えればよかったらしい。先ほども述べたようにこれは区間になるため、累積和で処理できる。また2重にカウントする分は二次元累積和でキャンセルできる。これでセグ木の\logが落ちた。実行時間は703ms→437msであまり変わらない。またUFでサボっていた部分をBFSに変えたら逆に少し伸びた。

www.youtube.com

朝方まで論文に手を加え、少し日記を書いて午前7時就寝。今週のセミナーは木曜ではなく水曜、それも正午からの予定である。

06/12(水)

午前11時過ぎ起床。慌て気味に登校し、購買で買ったパンを食べて正午からのセミナーに参加した。

まず2時間は後輩の発表。教科書のうちセミナーでは飛ばした部分にある定義や定理を使う話からスタートしたら、即座にツッコミが入り、そこを説明しているうちに時間切れとなった。準備してきた部分に踏み入る余裕がなくて残念という気持ちと、案外重要そうな定義だったからしっかり確認出来てよかったという気持ちがある。

その後は久しぶりに先生の発表。毎回のセミナーで話すはずが、なんだかんだ我々の発表が長引いてばかりでなんと4月以来である。部分問題で\sum|x_i-y|を最小化するyの性質が出てきた。この形ならyx_iたちの中央値とすればよいのは競プロでは有名事実。今回はxが確率変数であり、正確には|x-y|積分値を最小化することになった。中央値をうまいこと定めれば結論は同じらしい。

次の2時間は先生が最近の研究内容について発表。予定されている学会発表に向け、この先数回は先生も話すらしい。

週記(2024/04/08-2024/04/14) - kotatsugameの日記

少しの議論も含め午後6時までかかった。学食で夕食を摂り下山。そういえば今日はサークルの活動日だったと思い出して教室に行ってみたら、ICPC向け3hバチャの終盤だった。最終問題に取り組んでみるも何もわからず終了。

https://onlinejudge.u-aizu.ac.jp/services/room.html#puzzleknot_20240612

午後8時頃帰宅し、サークルから出場するICPCチームの登録を行った。今年はmilkcoffeeさんと分担し、自分は3チーム担当する予定。

チュウニズムからツユ曲が消えるようだ。コナミは事件が報道されてすぐ削除したが、セガは微妙に時間がかかった。おそらく来週の大型アップデートで対応されるのだろう。理論値も出しているので心残りはない。少し増えた消える称号についてはまた集めに行く。

チュウニズムに収録されているツユの楽曲は全部理論値で揃えている

週記(2024/05/20-2024/05/26) - kotatsugameの日記

本を読んでいたら、AtCoderの企業対抗チームバトルが始まり、終わっていた。THIRDは見事優勝。先週の勉強会で短期AHCの戦略について詳しく議論されたが、こんなにすぐ成果に結びつくものかと感動した。

勉強会は短期AHCにおける戦略の話だった。

週記(2024/06/03-2024/06/09) - kotatsugameの日記

読んでいる本のクライマックスに差し掛かったところで午後11時半。せっかくのセミナーを控えていない水曜夜なので、3月以来久しぶりにCodechefに出た。Starters 138。

https://www.codechef.com/START138A

DISTSUBは長さ1,\dots,Kのislandの間を区切れればよいから、N\ge K(K+1)/2+K-1を判定。APOWBMODCは軽いギャグ。A^B\equiv 0\pmod CよりBが偶数かつCA^2だと嬉しい。このときにもう一つの合同式を満たそうとすると(B,C)=(2A,A^2)が考えられる。これでダメなのはA=2のケースのみなので、それだけ手で構築。

PREFSUFFもギャグ寄りか。prefixのbitwise ANDを大きくしたいので、同じ値を並べたい。そこで最初1,\dots,1,0を提出したが、これはA\ge 1の条件を満たさない。少し弄って3,\dots,3,1とした。TRIPRIは偶奇を見ればa=2と固定できる。あとは\sqrt N以下の素数の2乗を前計算しておいてチェック。

MODE_PROBLEMは各値の1個目を並べ、次に2個目を並べ、……とするのがよさそう。このとき必ず最後に置いた要素が最頻値となっているため、出現回数c回の値は答えへ1+\dots+cだけ寄与することになる。こうやってバラバラにすると差分更新が非常に簡単。KPRODSUMは最初部分列だと思い込んで畳み込みを持ち出してしまった。冷静になると尺取りで……は除算ができないため不可能。無理せず遅延セグ木で殴った。

CCLPEDは重みを固定して各辺を何回使うか考える。各頂点がflipする回数が偶数であること、また使う辺だけ集めたときの連結成分がそれぞれ2色持っていることが必要。手でいくらか試すと十分な気がしてきた。この場合重みとしては\min w_iから\min w_i-2までの3種類試せばよく、出したら通った。

48分で全完、2位。下のdivisionの2問も解いておいた。

コンテスト前に読んでいた本を読み切り、立て続けにもう2冊読んだ。

「永遠についての証明」。非常に面白かった。前半の数学科の描写はかなり真に迫っていると感じた。ただし学部入学から3年で研究テーマを決めたり取り組む問題を見出したりするのは現実離れしていると思う。またそういう様子が普通のこととして描かれるから、自分の現状と比較してつらい気持ちになったりもした。

しかし後半からは怒涛の展開。主人公の一人がどん底に向かって一直線に転げ落ちる様子にどんどん引き込まれていった。亡くなる理由はてっきり事故みたいなものだと思っていたのだが、まさかこういう展開だったとは……。そしてクライマックスに繋がる。ここの高揚感は物凄かった。オチは鉄板の手法ではあるものの、フラクタルを扱った作品であることを振り返ると感慨深いものがある。

以上、数学を扱う小説としては数学の扱いも正確だし、小説としての話の面白さもあるし、非常に良いと思った。ただ文庫本のカバーがいただけない。降ってくる数式が全部三角関数とはいったいどういうことか。しかも自分の買ったものは大きな帯が巻かれていて、そこには手書き風フォントで「数学知識必要度……星一つ」みたいなおせっかいが書いてある。余韻が台無し。

「煽り系ゲーム配信者(20歳)、配信の切り忘れによりいい人バレする。」。カクヨムで読んだ作品の書籍化。この作者は現在、同様のカクヨムラノベシリーズを複数抱えている。正直なことを言えば、自分が触れた他の2作品はどちらも主人公を持ち上げる向きが強引すぎてあまり好みでなかった。ではなぜ買ったかというと、この作品は面白かったという記憶が残っていたからである。実際今挙げた点については気にならなかった。おそらく副ヒロインと主人公の距離が少し遠いのが良かったのではないか。

続いて「煽り系ゲーム配信者(20歳)、配信の切り忘れによりいい人バレする。」2巻。だいたいここからカクヨムで読んでいない部分。そういえば1巻を読んでいるときには全く注意していなかったが、主人公は声だけの配信者、ヒロインはVTuber、2巻で登場したキャラは顔出し配信者らしい。声だけというのはちょっと想像がつかないなと思った。

Twitterで他人のいいね欄が見られなくなった。「今週中に~」みたいな話だったはずだが対応が早すぎる。

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

06/13(木)

午後5時起床。しばらく布団でゴロゴロしてから学食に行って夕食を摂った。

帰宅してまた布団に戻り、ラノベ。途中寝落ちしたりネット小説にうつつを抜かしたりしながら昼前までずっと読み続けていた。「異端な彼らの機密教室」1巻と2巻を読了。

戦場帰りの主人公が学園に入学する話ということだったが、学生らしいシーンがほとんどなく訓練一辺倒。また任務で学園外に赴いての実戦シーンだったから、期待していた学園モノらしさというのは一切感じられなかった。2巻で完結らしい。話を回収し、締めのシーンも用意してきちんと終わっている点は好印象だった。

午前10時就寝。

06/14(金)

午後4時に目を覚ました。なろうを読み始めたら歯止めが利かなくなり、3時間ほど経過。購買は閉まったし今から学食に行くのも面倒。ゲーセンに行くかどうか検討しているうちに寝落ちした。起きたら午後10時半。仕方ないのでラノベを読んだ。

「非科学的な犯罪事件を解決するために必要なものは何ですか?」を読了。ハーメルンで読んでいる非常に好きな作品の書籍化。気合いを入れて読みたかったのでタイミングを計っていたら刊行から4か月以上経ってしまった。自分はWebで先を読んだから、1巻時点での主人公の自分語りが全く信用ならないことを知っており、かつそれがこの作品の特に好きな点になっている。しかし1巻だけでは伝わらないだろう。まだ続刊するとの情報がないが、どうだろうか。

続いて「現代社会で乙女ゲームの悪役令嬢をするのはちょっと大変」5巻を読了。これは気合いを入れて読みたいというより読むのに気合いが必要で、先ほどのラノベと同じくらいの期間積んでしまった。案の定読み終えると疲労困憊だったが、面白さは健在。この巻は経済以外の分野における主人公の活躍が多めだったと思う。そして後半ではいよいよ中学生に進級。側近団が入学してきて、校内でも派閥に気を遣った行動が求められ、これから大変そう。

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

06/15(土)

目覚ましで目を覚ましたら午後1時55分だった。飛び起きてUniversal Cupに参加。今日は第2回目、Zielona Góraセット。

https://qoj.ac/contest/1699

書く

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

AtCoder Beginner Contest 358 - AtCoder

書く

www.youtube.com

明後日に迫った勉強会の準備を開始。朝まで取り組んで午前8時半に寝た。

06/16(日)

午後3時起床。AHC034に参加した。

Toyota Programming Contest 2024#6(AtCoder Heuristic Contest 034) - AtCoder

明らかに\mathrm{diff}=0を狙うべきだろう。これを達成する方法で簡単に実装でき、なおかつそこそこの順位が出そうな方法として、最小費用流を考えた。hの値に応じて各頂点に需要あるいは供給を設定し、辺のコストを1として流すと、移動する土砂量が最小となる解が見つかる。あとはこれを再現すればよい。

盤面をジグザグに動きながら土砂を積み下ろしすることにした。これで5209501703点。発展として辺のコストを縦横で変え、さらに盤面全体を転置してもう一度解いたら6063141450点が出た。どちらかの提出で一瞬順位表の2ページ目に滑り込んだはず。

残り時間は盤面上の動きを最適化しようとしていた。最小費用流で見つかる解は、土砂を1マス運ぶ動きの積み重ねになっている。これをリストアップし、適当に並べ替え、それに沿ってダンプカーを動かしてみた。最適化は近傍を2点swapとした焼きなまし。2-optのつもりだったが調べてみると微妙に違いそう。

最初の貪欲に勝てていないし、焼きなましの時間を延ばしてもスコアが特に伸びない。ダメそうと思いつつも他の方針を立てる気力はなく、適当にパラメータ調整をしていた。ギリギリ貪欲を上回ることのできた6117452898点が最終結果。236位。

TLの感想戦によれば、最小費用流を持ち出すのが早すぎたらしい。経路を決めてからそれに沿った辺のみで流すといい感じになるようだ。これは自分の解法に比べ、土砂の移動量を増やしてダンプカーの移動量を減らしたものと見なすことができる。実際自分の解を確認してみると、ダンプカーの移動によるコストが土砂のそれの倍くらいになっていた。この確認はできるべきだったと反省。

時系列が前後するが、実はAHCを1時間残して離脱し、午後6時からCF #953 div.2に参加していた。

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

書く

www.youtube.com

勉強会の準備をした。スライドの体裁にこだわりすぎたり、後半の内容がうまくまとまらなかったりして、非常に長い時間をかけてしまった。何とか形になったころには正午を回っていた。

午後0時半就寝。