传送门
线段树优化 d p dp dp入门题。
要求把 n n n个数分成 k k k段,每段价值为里面不相同的数的个数,求所有段的价值之和最大值。 n ≤ 35000 , k ≤ 50 n\le35000,k\le50 n≤35000,k≤50
先考虑直接暴力 d p dp dp, f j , i f_{j,i} fj,i表示把前 i i i个分成 j j j组的最优值。
显然 f j , i = max j − 1 ≤ k ≤ i − 1 { f j − 1 , k + W ( k + 1 , i ) } f_{j,i}=\max\limits_{j-1\le k\le i-1}\{f_{j-1,k}+W(k+1,i)\} fj,i=j−1≤k≤i−1max{
fj−1,k