code1319 玩具装箱
一个划分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 玩具装箱的更多相关文章
- BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9812 Solved: 3978[Submit][St ...
- 【BZOJ-1010】玩具装箱toy DP + 斜率优化
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8432 Solved: 3338[Submit][St ...
- C++之路进阶——codevs1319(玩具装箱)
1319 玩具装箱 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description P教授要去看奥运,但是他舍不下他的玩具,于是 ...
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP
1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ...
- 【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] ...
- 【bzoj1010】[HNOI2008]玩具装箱toy
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9281 Solved: 3719[Submit][St ...
- 【斜率DP】BZOJ 1010:玩具装箱
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 7537 Solved: 2888[Submit][St ...
- BZOJ_1010_[HNOI2008]_玩具装箱toy_(斜率优化动态规划+单调队列)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1010 给出\(n\)和\(l\).有\(n\)个玩具,第\(i\)个玩具的长度是\(c[i]\ ...
- 【BZOJ 1010】 [HNOI2008]玩具装箱toy (斜率优化)
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9330 Solved: 3739 Descriptio ...
随机推荐
- 打包python文件,让文件程序化
通过对源文件打包,Python程序可以在没有安装 Python的环境中运行,也可以作为一个独立文件方便传递和管理. 现在网上主流的打包方式有两种py2exe或者pyinstaller两款多平台的Pyt ...
- MySQL Join算法与调优白皮书(一)
正文 Inside君发现很少有人能够完成讲明白MySQL的Join类型与算法,网上流传着的要提升Join性能,加大变量join_buffer_size的谬论更是随处可见.当然,也有一些无知的PGer攻 ...
- jquery Autocomplete函数
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- canvas之绘制一张图片
<canvas id="canvas" width="600" height="500" style="background ...
- jdbc调用sparksql on yarn
spark sql访问hive表 1.将hive-site.xml拷贝到spark目录下conf文件夹 2.(非必需)将mysql的jar包引入到spark的classpath,方式有如下两种: 方式 ...
- Mybatis内部原理与插件原理
Mybatis的运行分为两大问题,第一部分是读取配置文件保存在Configuration对象中,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程.相对而言SqlSe ...
- Visual Studio Online 创建项目
VSO是微软为软件开发人员提供的一款基于云计算的开发平台.Team Foundation Server已经可以基于云端使用,无需再为配置和部署耗费多余的时间(PS:当初为了在服务器上部署这个鼓捣了4个 ...
- 继承String?
不能继承,因为 public final class String extends Objectimplements Serializable, Comparable<String>, C ...
- [Python] Regular Expressions
1. regular expression Regular expression is a special sequence of characters that helps you match or ...
- 遇到的有关js继承和原型链的一个问题
function A(var1){ this.var1 = var1; } A.prototype = { var1:1 } var b=new A(); b.var1 = 2; var c = ne ...