一个划分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. 轻量级封装DbUtils&Mybatis之三MyBatis分页

    MyBatis假分页 参考DefaultResultSetHandler的skipRows方法. 温馨提示:部分代码请参考轻量级封装DbUtils&Mybatis之一概要 解决方案 1)之前公 ...

  2. 高德js API根据出行方式和出现策略由起始点经纬度实现路线规划

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. 【转】Jmeter入门:如何建立和使用Jmeter测试环境

    一.工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用, 后来又扩充了其它的功能.j ...

  4. Java经典练习题_Day04

    一.选择题 1. 下列关于数组的说法正确的是:(A) A. 在Java中数组的长度是可变的 B. 数组中存储的数据的类型是相同的 C. 数组在进行扩容操作的时候源数组的地址不发生改变 D. int[] ...

  5. zookeeper实战:SingleWorker代码样例

    我们需要一个“单点worker”系统,此系统来确保系统中定时任务在分布式环境中,任意时刻只有一个实例处于活跃:比如,生产环境中,有6台机器支撑一个应用,但是一个应用中有30个定时任务,这些任务有些必须 ...

  6. 模块初识import sys---- sys.argv--- import os---- os.system("df -h")

    模块分2种,也叫库 1.标准库,直接导入import就可以用 2.第三方库,必须先安装再导入import才能使用 import sys print(sys.path) #打印环境变量 这边有一个注意事 ...

  7. 第一章 先把Kubernetes跑起来

    1.1 先跑起来 k8s官网已经为大家准备好了一个现成的最小可用系统.  https://kubernetes.io/docs/tutorials/kubernetes-basics/ 1.2 创建K ...

  8. canvas之旋转一条线段

    <canvas id="canvas" width="600" height="500" style="background ...

  9. pickle示例

    my_pickle.py---------------------- #!/usr/bin/env python # encoding: utf-8  # Date: 2018/6/3import p ...

  10. Nginx加状态监控

    安装Nginx时加上        –with-http_stub_status_module 在nginx.conf server location /nginx_status { stub_sta ...