No.056 D

まず の場合は よい集合となるので, これを除いた空集合がよい集合とならず, 不必要でない.

の場合は, () の部分集合の和が区間 内の値になる部分集合があれば 不必要でない. そうでなければ不必要.

さて, () の部分集合の和が区間 のどれかになるかどうかを求める方法であるが, まずはDPを使って前から見ていって 番まで見たときに和が になるかどうか を求め, 後ろから見ていって 番まで見たときに和が になるかどうか を求める.

これを求めておくと, () の部分集合の和が になるものがあるかどうかは,

で求めることができる. の部分であるが, true ならば として累積和を取っておくことで, は高速に計算できる.