题意:把n段路分成m天走,求每天走的路程的方差的最小值。输出方差*m^2。
题解:斜率优化
我们先推一推公式。

v×m2=∑mi=1(xi−x¯)2m×m2=∑i=1m(x2i−2xix¯+x¯2)×m=∑i=1m(mx2i−2xis)+sum2

v\times m^2\\=\frac{\sum_{i=1}^m(x_i-\overline x)^2}m\times m^2\\ =\sum_{i=1}^m(x_i^2-2x_i\overline x+\overline x^2)\times m\\ =\sum_{i=1}^m(mx_i^2-2x_is)+sum^2然后直接搞就好了。
貌似可以划得更简= = 不管了反正能过
f[i][j]表示前i段路分成j天最小的 ∑mi=1(mx2i−2xis)\sum_{i=1}^m(mx_i^2-2x_is)
斜率:

f[k][o]−f[j][o]+m∗sum[k]∗sum[k]−m∗sum[j]∗sum[j]+2∗sum[n]∗sum[k]−2∗sum[n]∗sum[j]sum[k]−sum[j]≤2∗m∗sum[i]

\frac{f[k][o]-f[j][o]+m*sum[k]*sum[k]-m*sum[j]*sum[j]+2*sum[n]*sum[k]-2*sum[n]*sum[j]}{sum[k]-sum[j]}\leq 2*m*sum[i]
滚也懒的滚了。。。
代码:

#include<cstdio>
#include<cstring>int n,m,a[3010],sum[3010],f[3010][3010],q[3010][3010],st[3010],ed[3010];double slp(int k,int j,int o)
{return double(f[k][o]-f[j][o]+m*sum[k]*sum[k]-m*sum[j]*sum[j]+2*sum[n]*sum[k]-2*sum[n]*sum[j])/(sum[k]-sum[j]);
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);sum[i]=sum[i-1]+a[i];}for(int j=0;j<m;j++){for(int i=1;i<=n;i++){while(st[j]<ed[j]&&slp(q[j][st[j]],q[j][st[j]+1],j)<2*m*sum[i])st[j]++;int hh=q[j][st[j]],x=sum[i]-sum[hh];f[i][j+1]=f[hh][j]+m*x*x-2*sum[n]*x;while(st[j+1]<ed[j+1]&&slp(q[j+1][ed[j+1]-1],q[j+1][ed[j+1]],j+1)>slp(q[j+1][ed[j+1]],i,j+1))ed[j+1]--;q[j+1][++ed[j+1]]=i;}}printf("%d",f[n][m]+sum[n]*sum[n]);
}

bzoj 4518: [Sdoi2016]征途相关推荐

  1. BZOJ 4518: [Sdoi2016]征途 [斜率优化DP]

    4518: [Sdoi2016]征途 题意:\(n\le 3000\)个数分成m组,一组的和为一个数,求最小方差\(*m^2\) DP方程随便写\(f[i][j]=min\{f[k][j-1]+(s[ ...

  2. BZOJ 4517: [Sdoi2016]排列计数 [容斥原理]

    4517: [Sdoi2016]排列计数 题意:多组询问,n的全排列中恰好m个不是错排的有多少个 容斥原理强行推♂倒她 $恰好m个不是错排 $ \[ =\ \ge m个不是错排 - \ge m+1个不 ...

  3. bzoj 4602: [Sdoi2016]齿轮

    4602: [Sdoi2016]齿轮 Description 现有一个传动系统,包含了N个组合齿轮和M个链条.每一个链条连接了两个组合齿轮u和v,并提供了一个传动比x  : y.即如果只考虑这两个组合 ...

  4. bzoj 4517: [Sdoi2016]排列计数

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MB Submit: 637  Solved: 396 [Submit][Stat ...

  5. BZOJ 4516: [Sdoi2016]生成魔咒 [后缀自动机]

    4516: [Sdoi2016]生成魔咒 题意:询问一个字符串每个前缀有多少不同的子串 做了一下SDOI2016R1D2,题好水啊随便AK 强行开map上SAM 每个状态的贡献就是\(Max(s)-M ...

  6. 【bzoj4518】[Sdoi2016]征途 斜率优化dp

    原文地址:http://www.cnblogs.com/GXZlegend/p/6812435.html 题目描述 Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界 ...

  7. BZOJ 4602: [Sdoi2016]齿轮 dfs

    4602: [Sdoi2016]齿轮 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4602 Description 现有一个传动系统,包 ...

  8. bzoj 4514: [Sdoi2016]数字配对(二分图+费用最大流)

    4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1840  Solved: 703 [Submit][Sta ...

  9. bzoj 4517: [Sdoi2016]排列计数(错排+组合数逆元)

    4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MB Submit: 1259  Solved: 766 [Submit][Sta ...

  10. BZOJ.4598.[SDOI2016]模式字符串(点分治 Hash)

    LOJ BZOJ 洛谷 点分治.考虑如何计算过\(rt\)的答案. 记\(pre[i]\)表示(之前的)子树内循环匹配了\(S\)的前缀\(i\)的路径有多少,\(suf[i]\)表示(之前的)子树内 ...

最新文章

  1. linux kernel 内存管理 感想总结(未完待续)
  2. MAC OS 10.11.1虚拟机免费下载已安装Xcode7图片后有下载地址
  3. Request.ServerVariables完整参考
  4. windows照片查看器无法显示此图片_Real3d PhotoViewer下载-照片查看器 v1.2.2 官方版...
  5. hdu 1573(中国剩余定理非互质情况)
  6. javascript入门_JavaScript代理快速入门
  7. 第五十八期:从0到1 手把手教你建一个区块链
  8. 开源和devops_2016年开源工作报告:需要开发人员,DevOps和认证
  9. 计算机系统高级设置在哪里,Win7系统高级设置在哪里
  10. The server of Apache (四)——配置防盗链和隐藏版本信息
  11. java繁简转换_「繁简体转换」Java中文繁简体转换工具 - seo实验室
  12. oracle insert提高速度,如何提高oracle的insert速度
  13. 记录ESP32 出现未定义vTaskGetRunTimeStats的奔溃时刻!
  14. 2018初中计算机考试知识点,2018计算机等级考试考点:考前学习的技巧
  15. 随心所欲大小写转换自定义函数
  16. 登录+注册界面的实现(代码)
  17. 二极管(二):肖特基二极管
  18. B2B支付平台市场现状研究分析-
  19. 【论文】低光图像增强的零参考深度曲线估计
  20. 给定一个整数,判断它能否被3,5,7整除

热门文章

  1. hihocode——#1498 : Diligent Robots
  2. 北京航空航天大学计算机学院保研率,北京航空航天大学计算机学院(专业学位)计算机技术保研夏令营...
  3. html中图片椭圆,CSS3技巧之形状(椭圆)
  4. 做个合格的吃货~利用Python爬取美食网站3032个菜谱并分析
  5. kafka的Leader选举机制
  6. 西南大学计算机学院赖红,赖红 - 计算机与信息科学学院 - Powered by 西南大学
  7. android 手机如何截屏,安卓手机一般怎么截屏 安卓如何截图手机屏幕 - 云骑士一键重装系统...
  8. android 视频截屏代码,android视频截屏手机录屏实现代码
  9. 关于destoon系统遇到的一些问题总结
  10. java pdf转jpg_java pdf转换jpg