/ 最近 .rdf 追記 設定 本棚

脳log[2026-01]



2026年01月03日 (土) [AtCoder] 今日は ABC439(Promotion of AtCoderJobs) があった。幸先の悪い新年の始まり。■A 問題 2^n - 2*n。やります。■B 問題 Happy Number。やります。概ね減少するけどループがないとわからなかったので BFS で。■C 問題 2026。間に合うように解けません。■D 問題 Kadomatsu Subsequence。瞬殺だと思ったんだけど、7の因子と5の因子と3の因子が共存できないと勘違いして排他で処理を書いたらサンプルの3で答えが足りなかった。書いた時間の2倍以上をデバッグに使った。■E 問題 Kite。ずっと DP をやろうとしていた。y=0 と y=1 に対応した2系統の DP 列で答えを出そうとして、最終的にうまくいかないことがわかった。じゃあどうやったらうまくいくか、改めて考えると LIS が見えてくるのにそんなに時間はかからなかった。そこから立て続けにペナルティ2つ。同じ地点の競合がうまく処理できなかった。逆順では解決しないと思ったから回りくどい書き方をしたけど、やっぱり逆順でいけるんじゃないか? 余談。DP から LIS への頭の切り替えでちょっと苦労したギャップは、LIS では求めるものが明示的に値として記録されていないというあたり。作業配列の長さという形で LIS の長さが求まる。重層的な記録をインクリメンタルに更新する処理の進め方からは、LIS も DP の一種に見えるけど、ここでは区別した。■時間いっぱいの最遅 ABDE 4完。ということは最速 ABCD 4完と同等のパフォーマンスになるのかな、嬉しくないが。自分のすべての提出。■■■C 問題。組み合わせ全探索が許されていたんだね。y の上限が N のルートまでだから、2つの組み合わせはおよそ2乗でだいたい N。……という見積もりができなかったんだなあ。■■■F 問題 Beautiful Kadomatsu。終了後にちらっと読んでわかんないと思ってたんだけど、AtCoder Problems で水 diff だと見えたのでなめて取りかかってみた。提出 #72258562 (AC)。3つの状態に対応して3本の BIT を持った。状態というのは、点、上昇中、折れ曲がって下降中の3つ。最初に点があり、2点目で下降を始めた場合は絶対に門松的にならない。上昇するなら上昇中に移行する。上昇から下降に転じた段階で門松的になり、そこから上昇に転じたときに門松的ではなくなり再び上昇中に移行する。一直線の DP。数列を走査しながら状態を更新し、同時に各要素が門松的な部分列の末尾となる数を数えていく。■解説はよくわからないね。配列を2本と木を1つ使っているみたいで定数倍は良さそうだけど計算が難しそう。すべての部分列の累積和を求める典型にあてはめて端から順番に数えましょうよ。


2026年01月05日 (月)

最終更新: 2026-01-08T15:56+0900

なにか.

 「\xHH が使えない」は不正確

エディタの内部文字コードに対応して \x20\x00 というパターンでスペースが検索できる。

 \c が特別なのは \c. \c$ というパターンがあるから

覚えてないけどそうすべき理由を改めて調べた結論。消されてますけども。

 パターン+マッチ情報の分離 (CPattern)

 @brief Perl互換正規表現 BREGEXP.DLL をサポートするクラス

	DLLの動的ロードを行うため、DllHandlerを継承している。

	CJreに近い動作をさせるため、バッファをクラス内に1つ保持し、
	データの設定と検索の2つのステップに分割するようにしている。
	Jreエミュレーション関数を使うときは入れ子にならないように注意すること。

	本来はこのような部分は別クラスとして分離すべきだが、その場合このクラスが
	破棄される前に全てのクラスを破棄する必要がある。
	その安全性を保証するのが難しいため、現時点では両者を1つのクラスに入れた。

このコメントに応える動きかなと思う。

しかし温存された CBregexp と一部の役割(検索手段とマッチ結果へのアクセス)が重複していることと、新しく生えた CBregexp::GetPattern が CBregexp を形骸化させていることが気になる。CBregexp の存在意義が曖昧。

include を見ると CBregexp.h と CBregOnig.hpp が循環依存していることからも現状はいびつ。

DLL ファイルとしての側面から生の公開関数と実装補助を提供していた CBregexpDll2 (あらため CBregOnig) に対して、CBregexp は正規表現 API の側面から DLL の差異を吸収する統一メソッドを実装していた。パターン+マッチ情報クラスという、正規表現寄りで高レベル・一般性のあるものを生やすなら CBregexp の方では? なんで「CBregexp::CPattern を CBregOnig に移動」したのかはわかりませんが。


2026年01月10日 (土)

最終更新: 2026-01-11T20:55+0900

[BAD BOY] 後ろブレーキが V から油圧ディスクになった

 経緯

  1. ペダルを踏み込むと勝手に変速することがあって強く踏めない
  2. フリクション式のシフターがリアディレイラーのバネとの綱引きに負けてるのかな?

    渋めに調整してもあんまり

  3. スプロケットがぐらぐらしてる!
  4. スプロケットの台座であるフリーボディがぐらぐらしてる!

    実は以前からハブ周辺を洗ってもすぐに赤茶色の錆が湧いてくる状態だった

    直近では乗り出し直後に限ってだけどフリーのツメが引っかからなくて順方向に漕いだペダルが空転していた

  5. フリーボディ交換?
  6. 驚いたことに 14 年前の 2011 年に組まれたホイールに使われていた後輪ハブ (SHIMANO FH-M775) のフリーボディがパーツ番号で普通に購入できた
  7. マニュアルもあった (SI-3CZ0A-002-ENG.pdf)
  8. でも 17 mm ハブスパナと 5 mm アーレンキーで外す反フリー側のキャップが、外せないままネジ穴(六角)をなめて詰み
  9. 新しいホイール (SHIMANO WH-RX010)

    • 黒色
    • フレームリヤエンド幅 135 mm に対応
    • ディスクブレーキ対応
    • HGスプラインL なので HGスプラインM よりスプロケット台座が長いが付属のスペーサーで対応可能
    • 9mm 軸のクイックリリース仕様 (E スルーアクスルにはフレームが対応していない)
    • リムは 700x25C から 38C のタイヤサイズに対応 (26C と 28C のタイヤしか履かないし今のリムより幅広になるけど範囲内)
    • リムブレーキ非対応!!!

      一応書くと、ホイールは中心からハブ-スポーク-ニップル-リム-タイヤといった部分で構成されていて、V ブレーキはリムを挟んで止めるリムブレーキの一種。ブレーキシューの当たり面の銀色がリム側面になかった

  10. ホイールをゴミにするか後ろブレーキをディスクブレーキにするか

    前ブレーキは 2014 年にすでに V ブレーキから油圧ディスクにしているが、後ろをディスクにする積極的な理由が何もないまま 11 年が過ぎていたのだった

 パーツ

  • レバー (SHIMANO DEORE XT BL-M8100L)
  • キャリパー (SHIMANO DEORE XT BR-M8100)
  • ホース (SHIMANO SM-BH90 1700mm)
  • パッド (フィン付きメタルパッド J04C) ※フロントで使っているものと同じ

以上のものがセットになってオイルも充填済みのものがシマノから出荷されているらしい。J-kit とかいうのがそう?

  • ディスクブレーキマウントアダプタ (SHIMANO SM-MA90R160P/S)

160 mm ローター用。軽量タイプ。

フレームのディスクブレーキ台座が IS (インターナショナルスタンダード) なので、ポストマウント式のキャリパーを取り付けるためにあいだに挟む。

  • ディスクローター (BBB BBS-121 160mm センターロック仕様) ※ロックリングは付属しません!

フロントでは同じものの 180mm を使っている。シマノの3層構造のローターがよく鳴いてうるさかったので交換したら良かったので、後ろも同じに。

  • ロックリング (シマノパーツナンバー Y8K198010) 内セレーションタイプ

ローターもスプロケットもハブの両サイドで同じようなロックリングで固定されるけど、ローター用のものはスプロケットのロックリングより径が大きく厚みもあるので、スプロケットのロックリングが余っていても代わりにはならない。ならなかったんです。単体で買うと千数百円もする。とても高い。たぶんシマノのローターにはロックリングが付属していたはずで、それが今フロントで使われているのだけど、まさかこれがないために完成が一週間以上遅れるとは思わなかった。外セレーションタイプのロックリングもあって、ローターにどのタイプのロックリングが付属しているべきかわからないところもある。でもじゃあホイールかハブにロックリングが付属していてもいいんじゃないでしょうか!

 ディーラーマニュアル 油圧式ディスクブレーキ (DM-MADBR01-06-JPN.pdf)

 フリーストローク調整

フロントのブレーキは SHIMANO SLX のレバー (BL-M675B) とキャリパー (BR-M675-MF) が付いている。2014 年当時最も安価で導入できる油圧ディスクブレーキとして SLX グレードが人気だったように記憶していて、それにならったのだった。

相対的に前より重要ではないリヤブレーキに前よりお金をかけるのはもったいないのだけど、SLX のレバーにはないフリーストローク調整というものを試してみたかった。

SLX と DEORE XT のどちらのレバーにもあるのが握り幅調整というもので、指で回せる大きなネジでレバーとハンドルのあいだの距離(初期位置)を調整する。たとえばパッドが減ってくるとオイルを補充しない限りレバーをより大きく引かなければいけなくなる。オイルを補充するとパッド交換のときにピストンを押し戻すと補充した分のオイルがあふれることになるので、オイルは補充せずに済ませたい。そうするとレバーの初期位置をハンドルから遠ざけることで、レバーを大きく引いてもレバーとハンドルのあいだに指が挟まることがないようにすることになる。これが握り幅調整。だけどね、レバーの位置は手の大きさによって決まる一定の位置が最適です。フリーストローク調整というものでパッドの減りに伴う引き代の増加に対応してみたかった。

試しにいじってみたところでは、ものすごく微妙な変化が、あるようなないようなという感じ。それに自分は効き始めが早い方が好みなので、一番締め込んである初期状態が一番良い。そこからの調整は引き代が大きくなる調整しかできない。まあべつにいいよ。


2026年01月11日 (日) [AtCoder] 昨日は ABC440 (Promotion of Engineer Guild Fes) があった。苦しい。配点を見れば E までを確実に解きたい回。フタを開けてみれば C も D も E も苦しい。(結果とは別のところで)とても満足している。■A 問題 Octave。X の Y 乗ではありませんでした。■B 問題 Trifecta。T の小さい順に3つ。■C 問題 Striped Horse。問題文が難しいです。幅 2W で区切った前半 W を黒で塗る。変数は x。これを操作することで 2W の区切りをずらすことができる。N マスが 2W の倍数でないと面倒なので 0 を補って 2W 境界にアラインする。あとは尺取り。2W 幅の繰り返しは予め重ね合わせて同時に扱える。頭の中を整理しながら丁寧に丁寧に丁寧に時間をかけて尺取り。黒と白の幅がそれぞれ W しかないから勘違いしたけど、総当たりするには 2W 通りを考える。23 分かかった。■D 問題 Forbidden List 2。ある値 x が与えられたとき、X 以上 x 以下の整数の個数と、A 数列に含まれる X 以上 x 以下の要素の個数から、含まれない数の個数がわかる。ある値 x が A 数列に含まれる場合と含まれない場合を慎重に区別すれば答えを二分探索できると思ったけど、これは log が2乗になるというのに時間制限が標準の2秒しかない。これはいけない。A 数列をなぞる処理を考えよう。ソートした A 数列のうち X 以上の要素のみを並べた A′ について考える。求める Y 番目の値が A′[i] の左にあるか右にあるかは計算で求められる。答えが右にある A′[i] のうち最大のものはなんだろうか。なぜか Q×N の処理に満足して TLE を出したけど、A 数列をなぞる処理を二分探索で書き換えるのは簡単。6分で修正して全体で 35 分+ペナルティ5分。■E 問題 Cookies。まずですね、問題文でさらっと流されている全ての選び方が N+K-1 個から K 個を選ぶ方法の数だということがわからない。そこをわかったつもりでプライオリティキューを使って1個1個下位の要素に置き換えていく操作を X-1 回行う処理を書いたら、サンプルの3が合わない。どうやったらサンプル3の答えが出てくるのか、プログラムを離れても理解できなかった。最大の値 97 を2番目の値 93 に置き換えることで4ずつ小さくなっていくものだと思っていたら、途中から減り幅が2になって1になっている。ようやくわかったのは、たくさんの 97 を 93 に置き換えるよりも、1つだけの 97 を 59 に置き換える方が優れている、そういう閾値が K 以下で存在している場合があるということ。残り 10 分以下でそれがわかっても、なんならどれだけ時間があっても、重複なく整然と次の候補をキューに入れていくことができない。■自分のすべての提出。■動画を見ていて知ったけど、馬の問題が多かったらしい。今年は午年らしい。どうしてどちらも「らしい」なのか。シマウマがいきなり長さ N のマス目になるんだなという、前置きと本題の切り替えの唐突さは感じていたが、そういう理由だったのね。■■■E 問題。N+K-1 個から N-1 個を選ぶだと理解できた。K 個ではなく K 個以外である N-1 個の方が仕切り。H で表される組み合わせは知っているしそれで理解しようと考えていたんだけど、どちらに注目するかでさっぱりわからなくなるんだなあ。むしろ問題文に書かれていたことでわからなくなった。■E 問題。重複のない遷移を考える必要はない。最大 50 要素になる配列を Hash につっこんで重複を調べるので十分に早い。提出 #72433875 (TLE×18/AC×16)。ダメです。■提出 #72434929 (AC / 934 ms)。遷移先をより限定することで AC になった。A 数列は予め降順にソートしておく。各クッキーを何枚選んだかという C 数列を状態としてダイクストラ法をする。1枚以上選ばれたクッキー i のひとつひとつについて、遷移先は (C[i]-1; C[i+1]+1) したあとの C に限って良い。遷移できなければ遷移しないだけ。それで網羅できる。■E 問題。逆の遷移を考えることで重複のない一意の遷移を選ぶことができるとかなんとか解説に書いてあるらしい。読んだけどよくわからないので「らしい」です。■F 問題。動画で考察を聞いてなお実装が1時間で終わらない。提出 #72444957 (AC)。すべてが 66 行目に詰まっている。


2026年01月12日 (月) とある小説で1ページ内で4つも消化器、消化、消化器、消化と繰り返されていたけども、全部消火です。異化同化消化とあるけども、異化と消化の関係が不明瞭。異化作用のうち特定のものを、消化というみたいな、雰囲気を感じています。■検索したら出てきた「異化と同化、消化という用語について説明せよ。」簡潔な解答。「異化:複雑な物質をより簡単な物質に分解し、エネルギーが放出される過程。代表例に呼吸や発酵がある」「消化:細胞内や消化管内で、炭水化物・脂肪・タンパク質などが吸収可能な段階まで分解される過程。エネルギーは放出されない。」■さらに Wikipedia「異化 (生物学)」。「異化は次の三段階がある。(略) この段階は消化管の消化酵素や細胞内のリソソームの酵素によって行われる。消化によって糖質、脂質、タンパク質はそれぞれの構成単位である単糖類、脂肪酸、グリセロール、アミノ酸に変えられる。」 分解して ATP を作るまでが異化で、その第一段階のうち消化管内で行われるものはもちろん消化だろうけど、異化の第一段階は細胞内でも行われている。■もうひとつ Wikipedia「消化」。物理的消化と化学的消化という分類があるな。消化に注目すると今度は咀嚼までがスコープに入ってくる。■異化と消化は現象というよりは目的や機能に付けられた名前であり、一部にオーバーラップがあるということで良いだろうか。異化の目的(最終段階)は ATP を生み出すことです。消化の目的(最終段階)は食べ物を細胞内に取り込むことです。その過程でどちらも物質が単純化されます。