Luogu P4072 [SDOI2016]征途(坑)

考虑前 k k k 项的方差。
s 2 = 1 k ∑ i = 1 k ( v ˉ − v i ) 2 s = 1 k ( ∑ i = 1 k ( v ˉ 2 + v i 2 − 2 v ˉ v i ) ) = 1 k ( ∑ i = 1 k v ˉ 2 + ∑ i = 1 k v i 2 − ∑ i = 1 k 2 v ˉ v i ) ) = 1 k ( k v ˉ 2 + ∑ i = 1 k v i 2 − 2 v ˉ ∑ i = 1 k v i ) ) = v ˉ 2 + 1 k ∑ i = 1 k v i 2 − 2 k v ˉ ∑ i = 1 k v i = 1 k 2 ( ∑ i = 1 k v i ) 2 + 1 k ∑ i = 1 k v i 2 − 2 k v ˉ ∑ i = 1 k v i = 1 k 2 ( ∑ i = 1 k v i ) 2 + 1 k ∑ i = 1 k v i 2 − 2 k 2 ( ∑ i = 1 k v i ) 2 = 1 k ∑ i = 1 k v i 2 − 1 k 2 ( ∑ i = 1 k v i ) 2 \begin{aligned} s^2&=\frac{1}{k}\sum_{i=1}^k(\bar{v}-v_i)^2s\\ &=\frac 1k\Big( \sum_{i=1}^k (\bar v^2+v_i^2-2\bar vv_i)\Big)\\ &=\frac 1k\Big( \sum_{i=1}^k \bar v^2+\sum_{i=1}^kv_i^2-\sum_{i=1}^k2\bar vv_i)\Big)\\ &=\frac 1k\Big( k\bar v^2+\sum_{i=1}^kv_i^2-2\bar v\sum_{i=1}^kv_i)\Big)\\ &=\bar v^2+\frac 1k\sum_{i=1}^kv_i^2-\frac 2k\bar v\sum_{i=1}^kv_i\\ &=\frac 1{k^2}\Big(\sum_{i=1}^k v_i\Big)^2+\frac 1k\sum_{i=1}^kv_i^2-\frac 2k\bar v\sum_{i=1}^kv_i\\ &=\frac 1{k^2}\Big(\sum_{i=1}^k v_i\Big)^2+\frac 1k\sum_{i=1}^kv_i^2-\frac 2{k^2}\Big(\sum_{i=1}^kv_i\Big)^2\\ &=\frac 1k\sum_{i=1}^kv_i^2-\frac 1{k^2}\Big(\sum_{i=1}^kv_i\Big)^2\\ \end{aligned} s2=k1i=1k(vˉvi)2s=k1(i=1k(vˉ2+vi22vˉvi))=k1(i=1kvˉ2+i=1kvi2i=1k2vˉvi))=k1(kvˉ2+i=1kvi22vˉi=1kvi))=vˉ2+k1i=1kvi2k2vˉi=1kvi=k21(i=1kvi)2+k1i=1kvi2k2vˉi=1kvi=k21(i=1kvi)2+k1i=1kvi2k22(i=1kvi)2=k1i=1kvi2k21(i=1kvi)2

m m m 项的方差为 s 2 = 1 m ∑ i = 1 m v i 2 − 1 m 2 ( ∑ i = 1 m v i ) 2 s^2=\frac 1m\sum_{i=1}^mv_i^2-\frac 1{m^2}\Big(\sum_{i=1}^mv_i\Big)^2 s2=m1i=1mvi2m21(i=1mvi)2

乘上 m 2 m^2 m2,得: s 2 m 2 = m ∑ i = 1 m v i 2 − ( ∑ i = 1 m v i ) 2 s^2m^2=m\sum_{i=1}^mv_i^2-\Big(\sum_{i=1}^mv_i\Big)^2 s2m2=mi=1mvi2(i=1mvi)2

由于 ( ∑ i = 1 m v i ) 2 \Big(\sum\limits_{i=1}^mv_i\Big)^2 (i=1mvi)2 固定不变,因此要让 s 2 m 2 s^2m^2 s2m2 最小,只需要最小化 ∑ i = 1 m v i 2 \sum\limits_{i=1}^mv_i^2 i=1mvi2 即可。
定义: f [ i ] [ j ] f[i][j] f[i][j] 表示前面 i i i 个数分成 j j j 段的最小价值, s u m [ i ] = ∑ i = 1 i a i sum[i]=\sum\limits_{i=1}^i a_i sum[i]=i=1iai
转移: f [ i ] [ j ] = min ⁡ k = 1 i − 1 f [ k ] [ j − 1 ] + ( s u m [ i ] − s u m [ k ] ) 2 f[i][j]=\min\limits_{k=1}^{i-1}f[k][j-1]+(sum[i]-sum[k])^2 f[i][j]=k=1mini1f[k][j1]+(sum[i]sum[k])2
时间复杂度 Θ ( n 3 ) \Theta(n^3) Θ(n3),考虑斜率优化。
k a &lt; k b k_a&lt;k_b ka<kb k a k_a ka 优于 k b k_b kb,则有:
f [ k a ] [ j − 1 ] + ( s u m [ i ] − s u m [ k a ] ) 2 &lt; f [ k b ] [ j − 1 ] + ( s u m [ i ] − s u m [ k b ] ) 2 f[k_a][j-1]+(sum[i]-sum[k_a])^2&lt;f[k_b][j-1]+(sum[i]-sum[k_b])^2 f[ka][j1]+(sum[i]sum[ka])2<f[kb][j1]+(sum[i]sum[kb])2

f [ k a ] [ j − 1 ] + 2 s u m [ i ] ∗ s u m [ k a ] + s u m [ k a ] 2 &lt; f [ k b ] [ j − 1 ] + 2 s u m [ i ] ∗ s u m [ k b ] + s u m [ k b ] 2 f[k_a][j-1]+2sum[i]*sum[k_a]+sum[k_a]^2&lt;f[k_b][j-1]+2sum[i]*sum[k_b]+sum[k_b]^2 f[ka][j1]+2sum[i]sum[ka]+sum[ka]2<f[kb][j1]+2sum[i]sum[kb]+sum[kb]2

化简: ( f [ k a ] [ j − 1 ] + s u m [ k a ] 2 ) − ( f [ k b ] [ j − 1 ] + s u m [ k b ] 2 ) &lt; 2 s u m [ i ] × ( s u m [ k a ] − s u m [ k b ] ) (f[k_a][j-1]+sum[k_a]^2)-(f[k_b][j-1]+sum[k_b]^2)&lt;2sum[i]\times(sum[k_a]-sum[k_b]) (f[ka][j1]+sum[ka]2)(f[kb][j1]+sum[kb]2)<2sum[i]×(sum[ka]sum[kb])

整理:整理: ( f [ k a ] [ j − 1 ] + s u m [ k a ] 2 ) − ( f [ k b ] [ j − 1 ] + s u m [ k b ] 2 ) ( s u m [ k a ] − s u m [ k b ] ) &lt; 2 s u m [ i ] \frac{(f[k_a][j-1]+sum[k_a]^2)-(f[k_b][j-1]+sum[k_b]^2)}{(sum[k_a]-sum[k_b])}&lt;2sum[i] (sum[ka]sum[kb])(f[ka][j1]+sum[ka]2)(f[kb][j1]+sum[kb]2)<2sum[i]

单调队列维护递增斜率即可,转移时间复杂度 Θ ( 1 ) \Theta(1) Θ(1),总时间复杂度 Θ ( n 2 ) \Theta(n^2) Θ(n2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值