10/27(月)
午前8時過ぎ起床。先週月曜日に投稿できなかった先々週の分も含め、今日は日がな一日週記を書いていた。
昼前に大学生協に行ってラノベを買ったり食事したりした。昨日までの三日間、東北大学では大学祭が行われており、その反動か今日のキャンパスは人が少なく快適だった。天気が崩れていたのも理由の一つかもしれない。帰るときには雨がポツポツと降っていた。
午後はインターン先である株式会社THIRDの10周年記念イベントにオンラインで参加していた。オンラインなのは用事があったりする一部の従業員のみで、基本的には対面のイベントだったことを補足しておく。普段リモートワークの多い会社だから、会場を用意したり交通費を出したりとしっかりコストがかかっていた。定例会はなし。
若干埋め切れていない部分を残しつつも、なんとか二週分の週記を投稿し、午前1時就寝。
10/28(火)
午前7時起床。昼前まで先週の週記に追記したり、ゴミを出したりしていた。
コンテストTシャツが届いた。特に心当たりはなかったが、どうやら昨年11月に開催されたCF #985の賞品らしい。
Tシャツ pic.twitter.com/dXl1ctKOie
— こたつがめ (@kotatsugame_t) 2025年10月27日
Yandex CupのTrial roundを走った。コンテストシステムが変わったらしいので念のため。UIがとても綺麗になった以外、重大な変更はなかったものと思う。問題は7問あり、順に2024QualA、2024QualB、2024SemifinalA、2024SemifinalB、2024QualD、2023FinalA、2024SemifinalFで懐かしい気持ちになった。2023FinalのA問題は、当時自分がFAを取ったものである。
布団に戻ってラノベ「闇堕ちラスボス令嬢の幼馴染に転生した。俺が死んだらバッドエンド確定なので最強になったけど、もう闇堕ち【ヤンデレ化】してませんか?」2巻を読了。面白かった。入学試験で特待生の資格を得るため、変に実力を隠したりせず積極的に無双してくれたのが爽快だった。一方、いよいよ形になってきたヤンデレ設定は案の定肌に合わなかった。
そのあとハーメルンを読んでいるうちに寝落ち。午後11時半少し前に目覚ましで起きて、CF #1062 div.4に出た。
https://codeforces.com/contest/2167
A、Bはよい。Cはソート列が作れることを直接証明しようとして手間取ったが、単に任意のswapができる。Dはとだけ判定すればよいし、そもそも
を小さいほうから試すだけで十分高速。Eは二分探索。Fは各頂点に対して、その頂点以下の部分木がサイズ
以上になる根を数え上げる。接続する辺の先の頂点数がすべてわかればよい。Gは
のdpをするだけ。
問題文が短くて好印象だったが、やはりジャッジは詰まってしまった。幸いペナを出すことはなく、28分で全完して10位。
動画を公開して午前2時半就寝。
10/29(水)
午前中は寝たり起きたりしながらハーメルンを読んでいた。
MHCの日程が後ろにずれた。もともと今週末のオンサイトとR2が、AtCoder Japan OpenとFinalが被っていたが、それが一気に解決されて非常に助かる。
午後は数値計算しながらセミナー準備をしていた。夜から飲み会の予定があるためそれまでに一区切りつける予定だったものの、プログラムを弄っている時間が長くて資料作成まで手が回らなかった。結局終わらないまま、午後7時に家を出た。
今日はY.Y.さんが仙台に来られており、ホスフィンと自分に声をかけてもらった。店は日本酒の飲み放題がある「鶏が好きだと酒びたい」。自分だけ最初の一杯で適当にコークハイを注文してしまったが、その後はずっと日本酒を飲んでいた。会話の話題は研究というより、研究集会とか研究者についてだったと思う。自分もいくつかの会に参加して、少しずつ知り合いができてきた。
食事 w/ @ygussany pic.twitter.com/tQ1t80y8VZ
— こたつがめ (@kotatsugame_t) 2025年10月29日
調子に乗って他二人と同じペースで飲んでいたら帰り際に気持ち悪くなって少しばかりトイレに立てこもってしまった。嘔吐はしていない、というかできなかったのでギリギリセーフということにしてもらいたい。少し持ち直した隙に帰宅した。
計算機の様子を見て、プログラムを少し修正したり並列でいくつか走らせたりして、午前3時就寝。
10/30(木)
午前6時過ぎ起床。3時間ほどかけてセミナー資料を完成させ、それから昼までプログラムの高速化をしていた。
計算の方針を変えたため、多倍長整数で正確な値を求める必要のある箇所がかなり少なくなり、で計算しても運が悪くない限り正しく動作するようになった。しかし単にSageMathで有限体を使うだけでは、メモリ使用量はともかく計算時間にはそこまで改善が見られない。そこでSageMathからC言語のコードを呼び出すことにした。Geminiにctypesを使った連携のコードを書いてもらうと、うまく動いてくれた。
しばらく様子を眺めて、午後1時登校。学食で食事して半からセミナーを始めた。内容は数値計算の方針の改善で、話す量としてはかなり少なかったものの、結果にはそれなりに満足してもらえたらしい。運ゲーだった部分の成功確率が飛躍的に高まり、ついに137個あった対象すべてで成功したというのが大きいだろう。
セミナー後はいったん川内キャンパスに降りて、週末のオンサイト用の新幹線切符を買った。土曜朝に仙台から東京に行く新幹線は軒並み満席で、予定していた時間より一時間半ほど早い列車をなんとか確保してもらった。周り中埋まっている中二人掛けの席が横並びで空いていたので、タイミングよくキャンセルが出たのだと思う。
一方、日曜日は夜中からYandex Cup予選があるため夕方には帰るつもりで、その時間帯はガラガラだったのでとりあえず自由席特急券を買っておいた。ついでに届いていたラノベを受け取ってから青葉山キャンパスに戻り、院生室でしばらく読書に勤しんだ。
学食で夕食を摂ったら眠くなり、一時間ほど寝てしまった。午後10時に帰宅し布団に入って仮眠。午前1時半前に起きて、普段より二時間後ろにずれているCF combinedに出た。明日も平日だが社会人の方々が何人も出ておられて感動。
https://codeforces.com/contest/2161
Aはレートをできる限り下げていく。Bは2x2を作ると終わりで、それを回避しようとすると斜めの階段状になる。後者についてはという簡単な判定方法がある。
Cはボーナスを得られる機会が回あるので、そこに
の上位
個を合わせれば最大となる。実は必ず可能。下位
個買い終えていたら以降は毎回レベルが上がらないとおかしい、と考えて証明したが、「
をレベルが上がるように買う」「
をレベルが上がらないように買う」のどちらかが常に可能なことを見るほうが簡単。
Dは値の昇順に実家dp。Eは右端の区間から順に一文字ずつずらすことを考えると、途中からすべて同じ文字になることが分かる。その部分をprefixとしたときsuffixは、もし長さが以上なら、周期
を持ちさらに
0と1が同じ個数ある。prefixとsuffixの境目を全探索した。
Fはでの全域木と比べて損するところを考える。ある頂点
を固定したとき、
を選ばず、
から見て三方向以上に頂点がある場合が該当し、このとき
を根として最も浅い頂点
からほかの点への辺が採用される。
適当にタイブレークを入れてと
を固定する。
以外の頂点がある方向が
個だとすれば、
だけ損することになる。
と
を分けると、前者は方向を一つ選ぶ方法を込めればよく、例えば
のFPSをセグ木に乗せると求まる。後者は単なる点の選び方の数え上げ。
これで差分が求まったが、なんと損する前の数え上げを間違えて通せなかった。をfixしてからその周りを考えるといろいろ重複が生じてしまう。単に各辺が使われる回数を数えればよい。手元で愚直とずれるケースを見つけてはいたものの、辺を三回ダブルカウントしているのではなく長さ3のパスを一回ダブルカウントしているのだと思って、全然違うところをずっと弄っていた。
5完43位で2807→2818(+11)。順位のわりにパフォーマンスが渋い。参加者が少ないのかもしれない。あとからFをupsolveしておいた。
昼まではまたプログラムの高速化をしていた。計算をどんどんC言語に押し付けていく。C++の多倍長整数を使って脱SageMathをすることは、理論上可能だが実際には大変面倒。以前書いたC++のプログラムも、もうちょっと設計をちゃんとして再利用しやすい形に整備しておけばよかったなと思う。
午後1時就寝。
10/31(金)
午後6時起床。食事して午後7時からUniversal Cupを走った。週末は忙しいため、運営にお願いしてこの時間にレジらせてもらった。こういう要望を自動で処理するシステムの構想があるらしいが、現状はまだAdminのQingyuさんにDMを送るという運用になっている。
ともかく、今週は4回目のGrand Prix of Chengdu。
書く
グダグダしていたら午前4時になっていた。シャワーを浴び、オンサイトで提出する書類の準備をして就寝。
11/01(土)
今日はオンサイトコンテストの日。
AtCoder × Engineer Guild オンサイトコンテスト ~集結!高レート人材~ - AtCoder
午前7時起床。荷造りののち家を出て、午前8時過ぎの新幹線で東京に向かった。車内ではずっと寝ていた。
午前10時半ごろ新宿駅に到着。受付が始まる時間までゲーセンで時間を潰そうと思い、GiGO新宿西口へ向かった。道を歩いていると風景に見覚えがある。2022年夏、第三回の学生最強コンのときにはこのあたりのかなり良いホテルに泊まったのだった。当時はコロナの影響でホテル代が安く、今調べると倍近い値段になっていた。
ゲーセンでは10クレ遊んだ。「WE GOTTA SOUL」のULTは二プレイ目で理論値が出た。大好きな曲なので、早々に出てしまって少し残念な気持ちもある。それから「ハルシナイト」ULTの理論値を狙っていたが、こちらは全然精度が取れず、1-0-0と0-1-0を一回ずつ出して時間切れとなった。
今日は10クレ pic.twitter.com/8grBSdSoig
— こたつがめ (@kotatsugame_t) 2025年11月1日
ゲーセンから会場までが思ったより遠く、せかせか歩いて午後0時20分くらいに到着した。受付を済ませて座席に向かう。机も椅子も学生最強コンと同じ、ただし人数が倍になっているため今日は二人掛け。特に狭いとは感じなかった。
机には名札の紙と養生テープの切れ端が置いてあった。どうやら服に直接貼れということらしい。とんでもなく大胆なコストカットと思って震え上がったがそういうわけではなく、AtCoder社とは無関係の事情で名札ホルダーが用意できなかったからだとアナウンスされた。
— こたつがめ (@kotatsugame_t) 2025年11月1日
AtCoder副社長による競プロerの就活失敗典型エピソードを聞いて、午後1時10分からコンテスト開始。
AtCoder × Engineer Guild オンサイトコンテスト ~集結!高レート人材~ - AtCoder
配点が2-3-3-4-4なので舐め切った態度で臨んだらCで10分スタックした。全完した人から立ち上がって部屋を出ていくので、自分が遅れているということをまざまざと理解させられて結構辛かった。しかし蓋を開けたら4位だったので、まあセーフということで。コンテスト中は順位表が非公開だったので、もっと下だと思って落ち込んでいた。
全完後は別の部屋のスポンサーブースを回った。六社すべて完走すると、先着順で人にアマギフ
円が配られる。話を熱心に聞いたり積極的に質問したりしているとどんどん遅れを取ってしまうので少しモヤモヤしていたが、普段からこのシステムなので今更の話だった。
システムに改善案はないが、会社説明の前にブースを訪れた証を配ってしまうスポンサーの行動は微妙かも。振り返ってみると、学生最強コンのスポンサーたちはちゃんと説明の後に証を配っていた。慣れかな。
また、もともとスポンサー側には「一時間くらい経ったら人が来ます」と伝えられていたらしい。あのセットで一時間保つわけもなく、一部のブースは準備が終わっていなかった。残念に思う。
完走してもまだ一時間以上余っていたので、残りの時間はずっと懇親していた。主にはkotamanegiさん・vwxyzさん・oteraさんと話した。vwxyzさんは直前のAGC writerだったので、その話題で大人気だった。oteraさんとは昨年のCOSS以来、久しぶり。ホスフィン経由で近況が伝わっているらしく面白かった。
コンテスト時間が終了した時点で一度座席に戻らされ、ここでようやく名札が配られた。ハンドルネームが書かれた面と本名が書かれた面があるのに気づかず、適当に写真を撮りTwitterに上げたが、偶然ハンドルネーム側が写っていた。別に本名を隠しているわけではないものの、意図せず出してしまうと決まりが悪い。
またすぐスポンサーブースのほうに移って、今度こそ本物の懇親会が開始。食事を用意する業者が変わったらしく、メニューが学生最強コンのときと異なっていた。野菜!肉!という感じで変に上品でないこちらのほうが好み。朝はおにぎり一つ、昼はゼリー飲料一つで空腹だったため、しっかり食べた。
— こたつがめ (@kotatsugame_t) 2025年11月1日
一人突っ立っているだけでもいろいろ話しかけてもらえて大変嬉しかった。帰り際にはサインも書かせてもらった。途中、もうちょっと熱心に懇親しようと集団に突撃してみたが、自己紹介のあとの話題を自分から出せなかったのは申し訳ない。結局その場では言語アップデートとコードゴルフに関する話で盛り上がった。
サイン書かせてもらった(*^^)v@matcharate_12 @kurig15 pic.twitter.com/aVQSdQxnAM
— こたつがめ (@kotatsugame_t) 2025年11月1日
最後まで残っていた十人で近くのファミレスに入った。ひと固まりで座ることはできず、自分はkemunikuさん・kichi2004_さん・Yutch591さんとご一緒した。
— こたつがめ (@kotatsugame_t) 2025年11月1日
解散してホテルにチェックインし、午後9時からABC430。今回から言語アップデートが適用されている。
AtCoder Beginner Contest 430 - AtCoder
Aはの否定を慎重に実装。Bはよい。Cは二つの条件の境界をそれぞれ尺取りで求めたが、右端までたどり着いたところで抜けがあり1WA。二分探索で実装しなおしたら通った。Dはsetで両隣を見る。かなり面倒。Eは
にZ-algorithmを適用する。Fは各数の左右どちらかにしか来られない数を数えればよく、
LやRがどれだけ連続しているかを見る。
Gは各に対しそれを含む集合の区間をsetで管理し、さらに各集合のサイズをセグ木で持つ。更新クエリはいくつかの区間ADDになり、そのもとで取得クエリはそのまま遅延セグ木に乗る。配点が625点なのは想定がSegment Tree Beatsだったかららしいが、この解法のほうが簡単だし、
でなくても解ける。
と言いつつGでも1WAしてしまい、45分2ペナ全完で8位だった。
シャワーを浴びてしばらくペンシルパズルを解き、午前2時過ぎ就寝。
11/02(日)
午前9時起床。チェックアウトして、ホテル一階のサンマルクカフェで朝食を摂った。
— こたつがめ (@kotatsugame_t) 2025年11月2日
学生最強コンのとき、以下のようなことを言っていた。今日は日曜日なので満を持して国立西洋美術館に向かう。
国立西洋美術館に行こうかなと考えていたのだが、調べてびっくり休館日だった。美術館・博物館系は軒並み月曜日が休みらしい。
週記(2025/08/25-2025/08/31) - kotatsugameの日記
上野へ移動する途中、読んでいたハーメルン「米花の向日葵の謎を追え!更新停止」を読了。好みの設定と読みづらい文章の板挟みになりつつ、なんとか最新話までたどり着いた。セリフを読めばわかることを直後の地の文でもう一度説明するため、非常にテンポが悪い。しかし設定は本当に好み。
上野駅を出て、上野の森美術館の「正倉院 THE SHOW」に信じられない長さの行列ができているのを尻目に、国立西洋美術館のほうへ歩いていく。ここにも行列があったがどうやら企画展ショップの入場待ちらしく、チケット売り場や企画展自体はまだそれほど混雑していなかった。現在行われているのは「オルセー美術館所蔵 印象派」。
オルセー美術館所蔵 印象派―室内をめぐる物語|国立西洋美術館
入ってすぐの部屋は非常に混雑していたものの、しばらく進むとそれなりに余裕ができてきた。ただし絵をじっくり眺められるほどではない。自分は遠巻きにして鑑賞していたが、横の説明文など細かい文字を読むのに難儀した。一方、来場者には女性が多かったのか、自分の身長でも頭越しに見ることができて良かった。
最後の部屋以外では撮影可能な絵がホワイトリストで指定されており、順に「エドガー・ドガ《家族の肖像(ベレッリ家)》」「ピエール=オーギュスト・ルノワール《ピアノを弾く少女たち》」「アルベール・バルトロメ《温室の中で》」の三つ。すべてパンフレットにあるが、やはり撮りたくなってしまうのが人の常。
企画展に続いて常設展のほうも見て回った。順路に沿って年代別に並んでおり、最初のほうは宗教画ばかり。新しめの絵の一部には撮影禁止のものやSNS投稿禁止のものがあった。後者については目的がよくわからないが、撮影自体はOKらしい。
「ジョアン・ミロ《絵画》」もSNS投稿禁止の絵の一つ。美術の教科書で見たことがあるはず。実物を目にするとなんというか吸い込まれるような心地になり、大変気に入ったので前のベンチでしばらくボーっとしていた。
— こたつがめ (@kotatsugame_t) 2025年11月2日
午後2時前には美術館を出た。この時間になるといよいよ来場者が多くなり、企画展には入場制限がかかっていたようだ。隣の国立科学博物館も大混雑。もう仙台に帰ろうかなと思いつつイベント案内の掲示板を見ると、東京国立博物館の特別展「運慶 祈りの空間―興福寺北円堂」が目に入ったので、これにも行くことにした。
東京国立博物館 - 展示・催し物 展示 本館(日本ギャラリー) 特別展「運慶 祈りの空間―興福寺北円堂」
人が多すぎてほとんど何も見えなかった。壁にあった説明書きだけはしっかり読んできた。本尊の両脇に控える無著像・世親像は、片方が壮年、もう片方が老年の相貌をしており、水晶を目にはめ込む「玉眼」という技法の最高傑作である……とあったはずだが、遠すぎてわからなかった。暗い部屋に暗い色なので、年齢は近寄ってもわからないかも。
特別展の部屋を出た後は、東博コレクション展(平常展)もぐるっと一回りした。長居するつもりがなかったため、展示はあまりじっくりとは見なかった。途中で庭園に出られるところがあり、「TOHAKU茶館」というカフェが営業していたので、そこで遅めの昼食とした。
運慶展に合わせたコラボメニューから「運慶食道」を選択。3200円のわりには量が少なかった。半分くらいは場所代だと思う。各座席に運慶展の図録が用意されており、そこで仏像のご尊顔をまじまじと眺めることができたのはよかった。
— こたつがめ (@kotatsugame_t) 2025年11月2日
最後にお土産でしおりを二つ買った。美術館のほうでも何か買えばよかったなと思ったが、そういえばそちらは朝からずっと行列ができていたのだった。
しおり買った pic.twitter.com/WEqyplGbkE
— こたつがめ (@kotatsugame_t) 2025年11月2日
午後4時前に博物館を出て、上野駅からやまびこの自由席に乗って仙台へ帰った。三人掛けの真ん中が開いている程度だったので、そこそこ空いていたことになる。爆睡しているうちに仙台に到着し、本を買い、「パンセ」でパンを買って帰宅した。
さて、今日は午後11時からYandex Cup Qualificationがある。Qualificationと言いつつ実際には12月の世界大会につながる重要な一戦。AI対策で画面や参加中の様子を録画することになっていたが、詳細がまだ出ていなかったので、公式Telegramにずっと張り付いていた。
それで仮眠を取り損ねてしまったし、結局最も具体的な指示はCFブログのほうになされた。検索禁止であること以外は気にしないでよいだろう。ライブラリも事前に落としておけば問題なく使える様子。マルチモニターについてはすべての画面を録画しておけばOKらしいが、なくても困らないからとりあえず取り外しておくことにした。
https://codeforces.com/blog/entry/146866?#comment-1322824
15分前から録画を開始して、いよいよコンテスト開始。誤答のペナルティがなく、完数と最後に問題を解いた時刻で順位がつけられ、上位二十名が決勝に進出する。
https://new.contest.yandex.com/contests/84268
書く
録画をYouTubeに限定公開でアップロードし、運営にURLを送って、午前5時半就寝。