先頭 i 本の最適状態を Fi=(Bi,Ui) とする。箱数 Bi を最大化し、同数なら使用本数 Ui を最小化する。i 本目を使わない候補は Fi−1。最後の箱が k+1,…,i なら、累積和で Qi−Qk≥X を満たし、候補は (Bk+1,Uk+i−k) となる。最後の箱を固定したとき、それ以前の接頭辞も最適でよいので、すべての解を考慮している。サブタスク 1 は各 k を調べる O(N2) の DP で解ける。全体では重さが正なので累積和は増加する。Qk≤Qi−X となる添字をポインタで順に一度ずつ追加し、Bk が最大、同じなら Uk−k が最小の状態を保持する。その候補と Fi−1 を比較する。時間は O(N)、領域は O(N)。
Solution written by GPT6.1