题目大意
Bovinopolis城市有 1 ≤ n ≤ 3 × 1 0 5 1\le n\le3\times10^5 1≤n≤3×105块牧草地形成一条线,每一块有一头牛,是Guernsey或Holstein(两种牛的品种)。
现在要把这座城市的牧草地分为一些连续的区间,每个区间有不超过 1 ≤ k ≤ n 1\le k\le n 1≤k≤n个牧草地。
由于政府被Holstein控制,所以需要使Guernsey更多或Guernsey和Holsteins一样多的区间个数最小化。请求出这个最小值。
题解
首先要学会 O ( n k ) O(nk) O(nk)的DP:设 d p [ i ] dp[i] dp[i]是前 i i i块牧草地的答案。
把Holsteins标为1,把Guernsey标为-1,设前缀和为 S [ i ] S[i] S[i],则区间 [ l , r ] [l,r] [l,r]被Guernsey占领的充要条件是 S [ r ] − S [ l − 1 ] ≤ 0 S[r]-S[l-1]\le0 S[r]−S[l−1]≤0。
d p [ i ] = max j &#