No.056 D
まず の場合は がよい集合となるので, これを除いた空集合がよい集合とならず, は不必要でない.
の場合は, () の部分集合の和が区間 内の値になる部分集合があれば は不必要でない. そうでなければ不必要.
さて, () の部分集合の和が区間 のどれかになるかどうかを求める方法であるが, まずはDPを使って前から見ていって 番まで見たときに和が になるかどうか を求め, 後ろから見ていって 番まで見たときに和が になるかどうか を求める.
これを求めておくと, () の部分集合の和が になるものがあるかどうかは,
で求めることができる. の部分であるが, が true
ならば として累積和を取っておくことで, は高速に計算できる.