ポイント交換 3D ステップグラフ(opt1 + opt2 合算)

100pt 単位の引換 → ⌊·⌋(ガウス記号)で真の階段関数。壁の向こうは スコア超過(制約外)

opt1 hours = ⌊(2a + 3b) / 100⌋ × 1.5  ←  100pt = 1.5h
opt2 hours = ⌊(2a + 5b) / 100⌋ × 1.0  ←  100pt = 1.0h
総 hours = opt1 + opt2  (opt1 と opt2 は別枠で並列に加算)
制約: 4380·a + 8010·b < 500000
合算(制約内 = 実行可) 制約外 = score 超過(共通色) opt1 opt2 スコア壁 4380a+8010b=500000 ★ 制約内最大: @ () score=
マウス: 左ドラッグ回転 / 右ドラッグパン / ホイールズーム。z 軸は 8倍スケール(目盛りは実 hours)。
結論: a 寄せが圧勝。a を 50 増やすと (2a+3b), (2a+5b) が両方 +100 跨ぐので opt1 +1.5h と opt2 +1.0h が 同時発火 → +2.5h/50a。score/h = 99,600(pure a, 50 刻み)。
壁の手前 = 制約内(score < 500k)の 濃いオレンジ、壁の向こう = score 超過の 暗い紫(全モード共通色)。 a 軸沿いに 50 刻みで階段が綺麗に積み上がっていくのが見える(壁を越えても同じパターンが続く)。
制約 500k 内の最大は (a=100, b=0) = 5h(score 498,000、限界ギリギリ)。壁の向こうは a=150 で 7.5h(score 747,000)と線形に伸びる。

各階段点の最小スコア

各 hours 値(階段の踊り場)を最小 score で達成する (a, b)k1 = ⌊(2a+3b)/100⌋, k2 = ⌊(2a+5b)/100⌋, h = 1.5·k1 + k2。 b ≥ 0 なので k2 ≥ k1 が常に成立 → h = 2, 3, 4, 5.5 などは 到達不可

制約 500k 内
h(k1, k2)(a, b)min score内訳
0 (0, 0)(0, 0) 0
1.0 (0, 1)(0, 20) 172,200 b=20 だけで opt2 を 1 回発火
2.5 (1, 1)(50, 0) 249,000 a=50 で両 opt 同時発火 ★
3.5 (1, 2)(0, 40) 344,400 b=40 で opt1×1, opt2×2
5.0 (2, 2)(100, 0)498,000a=100、制約 500k の限界 ★
壁の向こう(500k 超過)
h(k1, k2)(a, b)min score超過分
4.5(1, 3)(0, 60) 516,600+16,600
6.0(2, 3)(25, 50) 555,000+55,000
7.0(2, 4)(0, 80) 688,800+188,800
7.5(3, 3)(150, 0) 747,000+247,000
8.5(3, 4)(75, 50) 804,000+304,000
h=4.5 (516,600) > h=5.0 (498,000) の逆転に注目。a=100, b=0 で 5h 取る方が b=60 で 4.5h より 安い。 a=50, 100, 150 では (2a+3b) と (2a+5b) が 同時に 100 を跨ぐため、opt1 と opt2 が一斉発火して +2.5h ジャンプ。 a=100 = 498,000 はちょうど 500k 予算の 残り 2,000 score で b=0、絶妙な噛み合わせ。