我们要求的是max{∑S1′B−∑S2′A,∑S2′B−∑S1′A}的最小值,很难直接DP,因为无法知道当前元素对答案的贡献,因为最终的答案是取max的,无法再过程中取得最优值,需要考虑每个元素对答案的贡献.
- 如果当前元素放到集合S1 ,其对左边和的贡献是A
- 如果当前元素放到集合S2 ,其对左边和的贡献是−B
因此当前元素对左边和的贡献来回相差A+B ,其实
∑S1′B−∑S2′A=∑S1′B+∑S2′B−(∑S2′A+∑S2′B)
=∑B−∑S2′(A+B)
同理右边和即为
∑B−∑S1′(A+B)=∑B−(∑(A+B)−∑S2′(A+B))
=∑S2′(A+B)−∑A
因此答案即为max{∑B−∑S2′(A+B),∑S2′(A+B)−∑A}
直接Dp求出所有可行的∑S2′(A+B)
|
|