码迷,mamicode.com
首页 > 其他好文 > 详细

SDOI2016 征途 题解

时间:2018-07-02 11:03:22      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:四边形不等式   dpi   [1]   结果   连续   分割   inline   动态规划   min   

由于暂时不太想写四边形不等式的题解,于是就暂时写篇斜率优化的题解(反正迟早都得写)

大概意思说给你\(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]=min\left\{dp[i-1][k]+(w[j]-w[k])^2\right\},1\le{i}\le{n},1\le{j}\le{m},0\le{k}<j\)

SDOI2016 征途 题解

标签:四边形不等式   dpi   [1]   结果   连续   分割   inline   动态规划   min   

原文地址:https://www.cnblogs.com/ForwardFuture/p/9252159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!