一个划分dp,不过由于划分个数任意,仅用一维数组就可以

设dp[i]表示前i个装箱(任意个箱子)的费用最小值

dp[i]=min(dp[u]+cost(u+1,i))

但是n<=50000,n方的复杂度显然不能接受

设choice[i]数组存下对于每个i值,枚举所得的使f[i]最大的那个u值

打表,发现choice[]是单调不下降的

则每次对于一个新的i,在枚举u时只需要从choice[i-1]开始即可

代码:

#include<iostream>
#include<cstring>
#define Size 50005
using namespace std; int n;
int c[Size];
long long sum[Size];
long long L;
long long dp[Size];
int choice[Size]; long long cost(int l,int r){
long long x=sum[r]-sum[l-] + r-l;
return (x-L)*(x-L);
} int main(){
freopen("1319.in","r",stdin);
memset(dp,0x7f,sizeof(dp)); cin>>n>>L;
for(int i=;i<=n;i++){
cin>>c[i];
sum[i]=sum[i-]+c[i];
} dp[]=;
choice[]=;
for(int i=;i<=n;i++){
for(int u=choice[i-];u<=i-;u++){
if(dp[u]+cost(u+,i)<=dp[i]){
dp[i]=dp[u]+cost(u+,i);
choice[i]=u;
} }
} cout<<dp[n]; fclose(stdin);
return ;
}

为什么是单调的呢?请见 http://wenku.baidu.com/view/ef259400bed5b9f3f90f1c3a.html

至于更好的O(n)的斜率优化,改天再说吧...sleeping

code1319 玩具装箱的更多相关文章

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

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

  2. 【BZOJ-1010】玩具装箱toy DP + 斜率优化

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8432  Solved: 3338[Submit][St ...

  3. C++之路进阶——codevs1319(玩具装箱)

    1319 玩具装箱  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description P教授要去看奥运,但是他舍不下他的玩具,于是 ...

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

    1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ...

  5. 【BZOJ】【1010】【HNOI2008】玩具装箱Toy

    DP/斜率优化 根据题目描述很容易列出动规方程:$$ f[i]=min\{ f[j]+(s[i]-s[j]+i-j-1-L)^2 \}$$ 其中 $$s[i]=\sum_{k=1}^{i} c[k] ...

  6. 【bzoj1010】[HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9281  Solved: 3719[Submit][St ...

  7. 【斜率DP】BZOJ 1010:玩具装箱

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7537  Solved: 2888[Submit][St ...

  8. BZOJ_1010_[HNOI2008]_玩具装箱toy_(斜率优化动态规划+单调队列)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1010 给出\(n\)和\(l\).有\(n\)个玩具,第\(i\)个玩具的长度是\(c[i]\ ...

  9. 【BZOJ 1010】 [HNOI2008]玩具装箱toy (斜率优化)

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9330  Solved: 3739 Descriptio ...

随机推荐

  1. O/R映射及OID方案

    一.O/R映射层基本介绍 O/R映射层是持久层的一个特例,它的数据模型是对象模型(Object),存储模型是关系模型(Relational),cmp和Hibernate是对象模型到关系模型之间转换的两 ...

  2. linux 定时任务 Crond Crontab

    定时任务http://www.cnblogs.com/chensiqiqi/p/6367890.html http://www.cnblogs.com/chensiqiqi/p/6389611.htm ...

  3. 项目中Map端内存占用的分析

      最近在项目中开展重构活动,对Map端内存尽量要省一些,当前的系统中Map端内存最高占用大概3G左右(设置成2G时会导致Java Heap OOM).虽然个人觉得占用不算多,但是显然这样的结果想要试 ...

  4. C语言经典面试题 与 C语言面试宝典

    1 预处理 问题1:什么是预编译?何时需要预编译? 答: 预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作.主要处理#开头的指令.如拷贝#include包含的文件代码.替换# ...

  5. Windows下安装GCC

    1.GCC编译器的选择 Windows下最常见的安装GCC的方式有两种:Cygwin和MinGW.本文主要介绍MinGW的安装配置. 2.下载MinGW 下载地址:http://sourceforge ...

  6. 第十章 消息驱动的微服务: Spring Cloud Stream

    Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架. 它可以基于Spring Boot 来创建独立的. 可用于生产的 Spring 应用程序. 它通过使用 Sprin ...

  7. django第一课大概了解

    项目目录介绍: -------- manage.py : Django项目里面的工具,通过它可以调用django shell和数据库等. mysite/ 主要是项目配置的信息,通常一次生成后不需要其他 ...

  8. ubuntu下安装stm32开发环境

    在windowns下开发stm32刚开始学最烦的就是创建工程模板,都不知道为什么要那样设置,而且步骤繁多.现在我告诉大家一个好消息,在linux下配置stm32开发环境包括创建工程,使用JLink仿真 ...

  9. git之常用命令

    git之常用命令 1.下载远程仓库最新代码 $ git pull --rebase origin master 2.上传代码 $ git push origin master 3.退出编辑 ESC + ...

  10. 有关Zedgraph的功能扩展的笔记

    1.坐标轴范围.刻度调整后需要加上下面的语句才能刷新:     zedGraphControl1.AxisChange();     zedGraphControl1.Refresh(); 2.坐标范 ...