4518: [Sdoi2016]征途

题意:\(n\le 3000\)个数分成m组,一组的和为一个数,求最小方差\(*m^2\)


DP方程随便写\(f[i][j]=min\{f[k][j-1]+(s[i]-s[k])^2 \}\)

发现可以斜率优化,很久没写忘记了60分暴力走人


拆开平方,\(f[i][p]=-2s_i s_k + f[k][p-1] + s_k^2 - s_i^2\)

对于两个转移\(j,k\),j比k优时$$

slope(j,k)=\frac{f[j]+s_j2-f[k]-s_k2}{s_j-s_k} \ge 2s_i

\[纵坐标$A(i)=f[i]+s_i^2$,横坐标$s_i$,发现横坐标和斜率都递增,维护下凸壳就行了

</br>
MD这破玩意我还写错

```cpp
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
#define fir first
#define sec second
const int N=3005, INF=1e9;
inline int read() {
char c=getchar(); int x=0, f=1;
while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();}
while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
return x*f;
}

int n, m, a[N];
ll f[N][N], s[N];
inline double A(int i, int p) {return (double)f[i][p] + s[i]*s[i];}
inline double slope(int j, int k, int p) {
return (double)(A(j, p) - A(k, p))/(double)(s[j]-s[k]);
}
int q[N], head, tail;
void dp() {
f[0][0]=0; for(int i=1; i<=n; i++) f[i][1]=s[i]*s[i];
for(int p=2; p<=m; p++) {
head=1; tail=0;
for(int i=1; i<=n; i++) {
while(head<tail && slope(q[head], q[head+1], p-1) < 2*s[i]) head++;
int j=q[head];
f[i][p] = f[j][p-1] + (s[j]-s[i])*(s[j]-s[i]);
while(head<tail && slope(q[tail], q[tail-1], p-1) > slope(q[tail], i, p-1)) tail--;
q[++tail]=i;
}
}
ll ans = m*f[n][m] - s[n]*s[n];
printf("%lld\n",ans);
}
int main() {
//freopen("in","r",stdin);
freopen("menci_journey.in","r",stdin);
freopen("menci_journey.out","w",stdout);
n=read(); m=read();
for(int i=1; i<=n; i++) a[i]=read(), s[i]=s[i-1]+a[i];// printf("i %d\n",i);;
dp();
}

```\]

BZOJ 4518: [Sdoi2016]征途 [斜率优化DP]的更多相关文章

  1. bzoj-4518 4518: [Sdoi2016]征途(斜率优化dp)

    题目链接: 4518: [Sdoi2016]征途 Description Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地 ...

  2. 洛谷 P4072 [SDOI2016]征途 斜率优化DP

    洛谷 P4072 [SDOI2016]征途 斜率优化DP 题目描述 \(Pine\) 开始了从 \(S\) 地到 \(T\) 地的征途. 从\(S\)地到\(T\)地的路可以划分成 \(n\) 段,相 ...

  3. bzoj4518[Sdoi2016]征途 斜率优化dp

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1657  Solved: 915[Submit][Status] ...

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

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

  5. [SDOI2016]征途 —— 斜率优化DP

    时隔多年没有碰斜率优化了... 想当年被斜率优化虐的死去活来,现在看看...也就那样吧. Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计 ...

  6. BZOJ 4518 [Sdoi2016]征途(分治DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4518 [题目大意] 给出一个数列,分成m段,求方差最小,答案乘上m的平方. [题解] ...

  7. ●BZOJ 4518 [Sdoi2016]征途

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4518 题解: 斜率优化DP 首先看看最后答案的形式: 设a[i]为第i天走的距离,那么 $A ...

  8. 动态规划(决策单调优化):BZOJ 4518 [Sdoi2016]征途

    4518: [Sdoi2016]征途 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 532  Solved: 337[Submit][Status][ ...

  9. [SDOI2015][bzoj4518] 征途 [斜率优化dp]

    题面 传送门 思路 把$vm^2$展开化一下式子,可以得到这样的等价公式: $vm^2=m\sum_{i=1}^m a_i^2-\sum_{i=1}^m a_i$ 那么我们要最小化的就是$\sum_{ ...

随机推荐

  1. 搭建vue开发环境的步骤

    相信很多人在刚开始学习vue这个框架的时候,在最开始搭建开发环境的时候,都会遇到一些大大小小的坑,我之前在学习angular的时候搭建过一次,过了一个月后在搭建第二次的时候,竟然有一些混乱,所以今天想 ...

  2. Logstash+Kibana部署配置

    Logstash是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型. 典型的使用场景下(ELK): 用Elasticsearc ...

  3. ES6中promise的使用方法

    先看看ES5中异步编程的使用. let ajax = function (callBlack) { setTimeout(function () { callBlack && call ...

  4. Java Web学习路线图

    三张Java Web完整学习路线图,阶段一和JavaSE部分可不学

  5. 最常用Python开源框架有哪些?

    Python开源框架有很多,像Django.Flask.webpy等等,但哪些是最常用到的呢?我们收集了一些Python使用者的宝贵意见,把他们认为最常用的Python开源框架简单的介绍给大家. 一. ...

  6. PHP条件语句if的使用

    方法/步骤 if(条件){是否执行的代码...}:这样的用法常用于判断单一条件,当然,可以可以用逻辑符号将多个条件组合成同一条件. if else语句:如果条件不成立,就会执行else后面{}里的代码 ...

  7. 更改dede网站地图模板样式

    dedecms后台可以生成2个地图,一个是网站地图,html格式的,一个是rss地图,同样默认这2个地图生成之后也会有底部的dedecms版权声明,这个时候我们需要分别更改这2个模板才可以去掉底部的版 ...

  8. SSH会话连接超时问题

    目前大多数ssh服务是运行在Linux系统上的sshd服务.当访问终端在windows上时,各终端软件,如,putty,SecureCRT等,大多支持设置向服务器端自动发送消息,来防止终端定期超时.其 ...

  9. jQuery --- 实现 checkbox 样式的单选框

    早就想写点博客了 一直懒着动  最近发现一些写过的东西都不记得了,下决心把自己平时遇到的问题.得到的经验记录下来,希望能大家一点帮助 这是之前写的一个模态框 要求单选 但是 要求radio的默认样式 ...

  10. JavaScript ECMAScript版本介绍

    1. 介绍 1.1 什么是ECMAScript ECMAScript,简称ES,是由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers ...