SDOI2016 征途 题解
Posted forwardfuture
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDOI2016 征途 题解相关的知识,希望对你有一定的参考价值。
由于暂时不太想写四边形不等式的题解,于是就暂时写篇斜率优化的题解(反正迟早都得写)
大概意思说给你(n)段连续区间,你可以将这些区间分割成(m)块(不能将原有区间分成两块,只能在交界处分割),使得(m)块区间的长度的方差和最小。题目要求,若设方差为(v),那么最后请输出(v*m^2)。由此可见我们最小化的就是(v*m^2),那么我们可以对这个式子做点手脚,设m段区间的长度分别为(s[1]、s[2]、s[3]...s[m]),长度之和为(Sn),则有:
(v*m^2)
(=m^2*frac{1}{m}*sum_{i=1}^{m}(s[i]-frac{Sn}{m})^2)
(=m*sum_{i=1}^{m}(s[i]-frac{Sn}{m})^2)
(=m*sum_{i=1}^{m}(s[i]^2-frac{2*s[i]*Sn}{m}+(frac{Sn}{m})^2))
接着我们把三项都提出来,那么原式可化为:
((m*sum_{i=1}^{m}s[i]^2)-(m*sum_{i=1}^{m}frac{2*s[i]*Sn}{m})+(m*sum_{i=1}^{m}frac{Sn^2}{m^2}))
(=(m*sum_{i=1}^{m}s[i]^2)-m*frac{2*Sn^2}{m}+m*frac{Sn^2}{m})
(=(m*sum_{i=1}^{m}s[i]^2)-Sn^2)
所以将结果最小化就是将(sum_{i=1}^{m}s[i]^2)最小化,那么现在让我们来动态规划,设(dp[i][j])为前(i)段区间被分割成(j)块的最小代价,那么套路的(dp)方程如下:
(dp[i][j]=minleft{dp[i-1][k]+(w[j]-w[k])^2 ight},1le{i}le{n},1le{j}le{m},0le{k}<j)
以上是关于SDOI2016 征途 题解的主要内容,如果未能解决你的问题,请参考以下文章