题面

传送门

思路

把$vm^2$展开化一下式子,可以得到这样的等价公式:

$vm2=m\sum_{i=1}m a_i2-\sum_{i=1}m a_i$

那么我们要最小化的就是$\sum_{i=1}^m a_i^2$这个东西

设$dp[i][j]$表示前i段路程走了j天

转移显然:$dp[i][j]=min(dp[k][j-1]+dis(k,i)^2)(k=1...i-1)$

这就是个模板的斜率优化dp了

总复杂度$O(nm)$

Code:

写代码的时候需要注意一点:当前这一层的状态,要等到这一层(同一个i)都推完了,再一起入队,不然容易互相之间造成影响,导致WA

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
inline int read(){
int re=0,flag=1;char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-') flag=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') re=(re<<1)+(re<<3)+ch-'0',ch=getchar();
return re*flag;
}
int n,m,a[3010],q[3010][3010],l[3010]={0},r[3010]={0},maxq=3000;
ll dp[3010][3010],pre[3010];
ll up(int x,int y,int k){
return dp[x][k]-dp[y][k]+pre[x]*pre[x]-pre[y]*pre[y];
}
ll down(int x,int y,int k){
return 2ll*(pre[x]-pre[y]);
}
int main(){
n=read();m=read();int i,j;
for(i=1;i<=n;i++) a[i]=read(),pre[i]=pre[i-1]+a[i];
q[0][r[0]++]=0;
for(i=1;i<=n;i++){
for(j=max(1,m+i-n)-1;j<i;j++){//先取得状态
while(l[j]<r[j]-1&&up(q[j][l[j]+1],q[j][l[j]],j)<down(q[j][l[j]+1],q[j][l[j]],j)*(ll)pre[i]) q[j][l[j]++]=0;
dp[i][j+1]=dp[q[j][l[j]]][j]+(pre[i]-pre[q[j][l[j]]])*(pre[i]-pre[q[j][l[j]]]);
}
for(j=max(1,m+i-n);j<=i;j++){//分开入队
while(l[j]<r[j]-1&&up(i,q[j][r[j]-1],j)*down(q[j][r[j]-1],q[j][r[j]-2],j)<=down(i,q[j][r[j]-1],j)*up(q[j][r[j]-1],q[j][r[j]-2],j)) q[j][--r[j]]=0;
q[j][r[j]++]=i;
}
}
ll ans=0,mm=m;
ans=mm*dp[n][m]-pre[n]*pre[n];
cout<<ans;
}

最新文章

  1. 简单粗暴地理解js原型链--js面向对象编程
  2. ES6学习--搭建环境
  3. 后台动态生成GridView列和模版
  4. VirtualBox使用总结
  5. Linux的io机制
  6. Codeforces Round #379 (Div. 2) E. Anton and Tree 树的直径
  7. tnsnames linux找的位置顺序
  8. [ZOJ 1004] Anagrams by Stack (简单搜索)
  9. POJ 1195
  10. Genymotion无法启动Virtual Box
  11. 解决pycharm无法导入本地包的问题(Unresolved reference &#39;tutorial&#39;)
  12. TCP/IP笔记 二.网络层(1)
  13. GTK+2.0学习——C指针回顾
  14. zookeeper简单介绍
  15. Window下Eclipse+Tomcat远程调试
  16. C++ STL库的总结以及实现原理
  17. Rendering React components to the document body
  18. shell expect权威指南和实战
  19. jquery &lt;img&gt; 图片懒加载 和 标签如果没有加载出图片或没有图片,就显示默认的图片
  20. VUE自定义指令生命周期,VUE生命周期

热门文章

  1. Excel文档数据转成Plist文件
  2. vue项目不能同时被localhost和ip地址同时访问的方法
  3. POJ的层次感分类
  4. Spring Cloud 入门Eureka -Consumer服务消费(一)
  5. Nginx 配置继承模型
  6. 010---Django的模型层(2)
  7. Service Intent must be explicit
  8. [转]多多“亦”善:把大量内容放到一页PPT的5个技巧
  9. 为什么rows这么大,在mysql explain中---写在去acumg听讲座的前一夜
  10. 架构师速成7.3-devops为什么很重要 分类: 架构师速成 2015-07-07 17:22 410人阅读 评论(0) 收藏