【斜率优化】BZOJ1010 [HNOI2008]玩具装箱toy
【题目大意】
P教授有编号为1...N的N件玩具,第i件玩具长度为Ci.为了方便整理,P教授要求在一个一维容器中的玩具编号是连续的。如果将第i件玩具到第j个玩具放到一 个容器中,那么容器的长度将为 x=j-i+Sigma(Ck) i<=K<=j 制作容器的费用与容器的长度有关, 如果容器长度为x,其制作费用为(X-L)^2.其中L是一个常量。求最小费用。
【思路】
懒得说了,把WC宋新波老师的课件搬运一下。
宋新波老师讲的很好,WC的时候第一次听斜率优化听他讲完秒懂了,时隔几个月再来消化一下。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
const int MAXN=+;
int n,l;
int c[MAXN];
LL s[MAXN],g[MAXN],x[MAXN],y[MAXN],f[MAXN]; LL square(LL x)
{
return x*x;
} double slop(int i,int j)
{
return ((y[j]-y[i])/(x[j]-x[i]));
} void dp()
{
memset(f,,sizeof(f));
int head=,tail=;
int q[MAXN];
q[head]=;
for (int i=;i<=n;i++)
{
y[i]=f[i-]+square(x[i]);
while (head+<tail && slop(q[tail-],q[tail-])>slop(q[tail-],i)) tail--;
q[tail++]=i;
while (head+<tail && slop(q[head],q[head+])<2.0*g[i]) head++;
f[i]=f[q[head]-]+square(g[i]-x[q[head]]);
}
} void init()
{
scanf("%d%d",&n,&l);
memset(s,,sizeof(s));
for (int i=;i<=n;i++)
{
scanf("%d",&c[i]);
s[i]=s[i-]+c[i];
g[i]=s[i]+i-l;
x[i]=s[i-]+i;
}
} void printans()
{
printf("%lld",f[n]);
} int main()
{
init();
dp();
printans();
return ;
}
【斜率优化】BZOJ1010 [HNOI2008]玩具装箱toy的更多相关文章
- bzoj1010[HNOI2008]玩具装箱toy 斜率优化dp
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 11893 Solved: 5061[Submit][S ...
- bzoj1010: [HNOI2008]玩具装箱toy(DP+斜率优化)
1010: [HNOI2008]玩具装箱toy 题目:传送门 题解: 很明显的一题动态规划... f[i]表示1~i的最小花费 那么方程也是显而易见的:f[i]=min(f[j]+(sum[i]-su ...
- [bzoj1010](HNOI2008)玩具装箱toy(动态规划+斜率优化+单调队列)
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有 的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1.. ...
- BZOJ1010 [HNOI2008]玩具装箱toy 动态规划 斜率优化
原文链接http://www.cnblogs.com/zhouzhendong/p/8687797.html 题目传送门 - BZOJ1010 题意 一个数列$C$,然后把这个数列划分成若干段. 对于 ...
- 2018.09.05 bzoj1010: [HNOI2008]玩具装箱toy(斜率优化dp)
传送门 一道经典的斜率优化dp. 推式子ing... 令f[i]表示装前i个玩具的最优代价. 然后用老套路. 我们只考虑把第j+1" role="presentation" ...
- BZOJ1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 12451 Solved: 5407[Submit][Status][Discuss] Descript ...
- bzoj1010: [HNOI2008]玩具装箱toy(斜率优化DP)
Orz CYC帮我纠正了个错误.斜率优化并不需要决策单调性,只需要斜率式右边的式子单调就可以了 codevs也有这题,伪·双倍经验233 首先朴素DP方程很容易看出:f[i]=min(f[j]+(i- ...
- bzoj1010: [HNOI2008]玩具装箱toy——斜率优化
方程 $\Large f(i)=min(f(j)+(s(i)-s(j)-1-L)^2)$ 其中$s(i)$为i的前缀和再加上$i$ 对于某个$i$若$j$比$k$优,则 $\large f(j)+(s ...
- [BZOJ1010][HNOI2008]玩具装箱toy 解题报告
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...
随机推荐
- Tile Cut~网络流入门题
Description When Frodo, Sam, Merry, and Pippin are at the Green Dragon Inn drinking ale, they like t ...
- Django请求原理
总结一下: 1. 进来的请求转入/hello/. 2. Django通过在ROOT_URLCONF配置来决定根URLconf. 3. Django在URLconf中的所有URL模式中,查找第一个匹配/ ...
- xcode 10 新特性
这里主要介绍一下Xcode10 版本主要更新的内容.随着iOS12的发布,Xcode10已经可以从Mac App Store下载.Xcode10包含了iOS12.watchOS 5.macOS10.1 ...
- java封装的使用
一:前言 其实以前我们来学习java特性的时候,对于封装好想觉得没什么用处,至少我那个时候的感觉(不知道是不是我学的太浅薄了~),现在由于项目从零开始做得,在做得过程中我感觉到原来封装是这样用的. 二 ...
- bzoj4240 zkw版
复习一波zkw树 很显然最后建出来的图不是单调序列就是一个类似 ...
- [BZOJ3275]Number解题报告|网络流
Description 有N个正整数,需要从中选出一些数,使这些数的和最大.若两个数a,b同时满足以下条件,则a,b不能同时被选1:存在正整数C,使a*a+b*b=c*c2:gcd(a,b)=1 这道 ...
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
文本处理三剑客:1.grep 2.sed 3.awk 一.grep:(过滤) grep的使用,主要的参数有: -n :显示行号:-o :只显示匹配的内容-q :静默模式,没有任何输出,得用e ...
- POJ2495(棋盘分治,染色)
Incomplete chess boards Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2483 Accepted ...
- UVALIVE 3486 Cells
通过入栈出栈顺序判断祖先关系 这里UVALIVE还 #include <map> #include <set> #include <list> #include & ...
- UVA 10471 Gift Exchanging
题意:就5种盒子,给出每个盒子个数,盒子总数,每个人选择这个盒子的概率.求这个人选择哪个盒子取得第一个朋友的概率最大,最大多少 dp[N][sta]表示当前第N个人面临状态sta(选择盒子的状态可以用 ...