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_j^2-f[k]-s_k^2}{s_j-s_k} \ge 2s_i \]
纵坐标\(A(i)=f[i]+s_i^2\),横坐标\(s_i\),发现横坐标和斜率都递增,维护下凸壳就行了

MD这破玩意我还写错

#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. 【bzoj4518】[Sdoi2016]征途 斜率优化dp

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

  2. BZOJ 2149 拆迁队 斜率优化DP 主席树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2149 题目大意: 一个长度为 n n的序列aa,改变其中的某些数使之成为一个单调递增序列, ...

  3. [bzoj] 1597 土地购买 || 斜率优化dp

    原题 农夫John准备扩大他的农场,他正在考虑N块长方形的土地. 每块土地的价格是它的面积,但FJ可以同时购买多快土地. 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换. FJ ...

  4. [BZOJ4518][SDOI2016]征途[斜率优化]

    王道征途 \[ \text{题目要求的东西可以化成}m\times \sum_{i=1}^m{d\left[ i \right] ^2-pre\left[ n \right] ^2} \\ \text ...

  5. bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 又一道斜率优化dp.负数让我混乱.不过仔细想想还是好的. 还可以方便地把那个负号放到x ...

  6. 【BZOJ4518】征途,斜率优化DP

    写在前面:当时考场上想到了搞一个二维队列记录上次的函数值,但莫名就感觉这样和N^3做法没有区别(这告诉我们当你写出部分分而且还有大把的时间时就不要放弃写标算的希望),就弃疗了,不过就算搞出来了应该也不 ...

  7. BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  8. bzoj 1597: [Usaco2008 Mar]土地购买(斜率优化dp 例题)

    Description 农夫John准备扩大他的农场,他正在考虑N (1 <= N <= 50,000) 块长方形的土地. 每块土地的长宽满足(1 <= 宽 <= 1,000, ...

  9. 斜率优化dp 的简单入门

    不想写什么详细的讲解了...而且也觉得自己很难写过某大佬(大米饼),于是建议把他的 blog 先看一遍,然后自己加了几道题目以及解析...顺便建议看看算法竞赛(蓝皮书)的 0x5A 斜率优化(P294 ...

最新文章

  1. java p7 数字签名,p7结构的数字信封 | 学步园
  2. t490 指纹识别 linux,T490
  3. Mozilla与Ubisoft结盟一同开发AI替浏览器除错
  4. [SHOI2017]组合数问题
  5. boost::math::catmull_rom用法的测试程序
  6. 【干货】华为组织成长的动力机制.pdf(附下载链接)
  7. win11系统怎么样 Windows11系统好用吗
  8. iATKOS v7硬盘安装教程(硬盘助手+变色龙安装版)
  9. 手机怎么用外嵌字幕_怎么用手机给视频添加字幕?原来方法这么简单,3分钟教你学会...
  10. TeamTalk源码分析(一)—— TeamTalk介绍
  11. 【C++设计模式】抽象工厂模式
  12. DP算法——打家劫舍系列
  13. 计算机应用后期影音制作,WindowsLive影音制作分步说明.docx
  14. A320M HDV 4.0主板用CH341A手动刷BIOS支持5600g
  15. GTD系列之GTD是什么?怎么用?
  16. java 找出重复的数据_java 查找list中重复数据实例详解
  17. CSS实现背景图片不规则的导航菜单
  18. 提升金融写作效率:金融校对软件的优势与应用
  19. Selenium: either the element is no longer attached to the DOM, it is not in the curren
  20. 【3D电子书制作软件】名编辑电子杂志大师教程 | 如何控制flash播放?

热门文章

  1. 苹果cms V8模板 黑色自适应电影模板
  2. 苹果cms资源站360影视
  3. Iirf安装配置(图文)
  4. vsftpd 在linux 中的环境配置【部分原创】
  5. iframe框架页面实现自适应高度解决方案
  6. 脚本(js)控制页面输入
  7. jQuery:从零开始,DIY一个jQuery(1)
  8. 浏览器绑架:曾几何时,喜爱的“百度”成为了“流氓”的代名词?- 移除hao123首页...
  9. jQuery地图插件-jqvmap
  10. PHP 利用cron 实现文章同步至新浪、网易等微博