[HNOI2008] 玩具装箱 D2 T3 斜率优化DP
Description
Input
Output
Sample Input
Sample Output
#include<stdio.h>
#include<algorithm>
#define inf 1e18
using namespace std;
int n,l,sum[],a[];
int que[],h,t;
long long f[],q[],p[];
long long q1(long long x){return f[x]+q[x]*q[x];}
double count(int x,int y){return (q1(x)-q1(y))*1.0/(2.0*(q[x]-q[y]));}
int main()
{
scanf("%d%d",&n,&l);
for(int i=;i<=n;++i)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
sum[i]=a[i]+sum[i-];
for(int i=;i<=n;++i)
f[i]=inf;
for(int i=;i<=n;++i)
q[i]=sum[i]+i;
for(int i=;i<=n;++i)
p[i]=sum[i]+i-l-;
for(int i=;i<=n;++i)
{
while(h<t&&count(que[h],que[h+])<=p[i]*1.0)h++;
f[i]=f[que[h]]+(p[i]-q[que[h]])*(p[i]-q[que[h]]);
while(h<t&&count(que[t-],que[t])>=count(que[t],i))t--;
que[++t]=i;
}
printf("%lld",f[n]);
}
[HNOI2008] 玩具装箱 D2 T3 斜率优化DP的更多相关文章
- BZOJ 1010: [HNOI2008]玩具装箱toy(斜率优化dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题意: 思路: 容易得到朴素的递归方程:$dp(i)=min(dp(i),dp(k)+(i-k ...
- 2018.09.05 bzoj1010: [HNOI2008]玩具装箱toy(斜率优化dp)
传送门 一道经典的斜率优化dp. 推式子ing... 令f[i]表示装前i个玩具的最优代价. 然后用老套路. 我们只考虑把第j+1" role="presentation" ...
- P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)
P3195 [HNOI2008]玩具装箱TOY 设前缀和为$s[i]$ 那么显然可以得出方程 $f[i]=f[j]+(s[i]-s[j]+i-j-L-1)^{2}$ 换下顺序 $f[i]=f[j]+( ...
- _bzoj1010 [HNOI2008]玩具装箱toy【斜率优化dp】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1010 裸的斜率优化,第一次写队首维护的时候犯了个智障错误,队首维护就是维护队首,我怎么会那队 ...
- [HNOI2008]玩具装箱toy(斜率优化dp)
前言 这是我写的第一道$dp$斜率优化的题目,$dp$一直都很菜,而且咖啡鸡都说了这是基础的东西,然而看别人对$dp$斜率优化一大堆公式又看不懂就老老实实做几道题目,这个比较实在 描述 给出$n$和$ ...
- bzoj1010: [HNOI2008]玩具装箱toy(斜率优化DP)
Orz CYC帮我纠正了个错误.斜率优化并不需要决策单调性,只需要斜率式右边的式子单调就可以了 codevs也有这题,伪·双倍经验233 首先朴素DP方程很容易看出:f[i]=min(f[j]+(i- ...
- BZOJ 1010 [HNOI2008]玩具装箱toy:斜率优化dp
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题意: 有n条线段,长度分别为C[i]. 你需要将所有的线段分成若干组,每组中线段的 ...
- 洛谷3195 [HNOI2008]玩具装箱TOY(斜率优化+dp)
qwq斜率优化好题 第一步还是考虑最朴素的\(dp\) \[dp=dp[j]+(i-j-1+sum[i]-sum[j])^2 \] 设\(f[i]=sum[i]+i\) 那么考虑将上述柿子变成$$dp ...
- 【BZOJ 1010】 [HNOI2008]玩具装箱toy (斜率优化)
1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9330 Solved: 3739 Descriptio ...
随机推荐
- unity优化-CPU(网上整理)
CPU方面性能考虑:引擎和代码渲染模块.动画模块.物理模块.ui模块.粒子模块.加载模块.GC模块最重要的是渲染模块.UI模块和加载模块1.渲染模块主要是:场景.物体和特效的渲染a.降低Draw ca ...
- 六 一对多关联查询&关联查询小结
一对多关联查询:基于用户表关联查询订单表 在pojo中,一的一方方式多的一方的集合 在代理映射中配置查询方法,ResultMap一对多关系(注意:当两表有字段重名时,在一方字段设置别名,以免造成查询混 ...
- Victor and String[Bestcoder #52 1004](回文树)
题目描述 Victor喜欢玩字符串.他认为一个字符串是迷人的,当且仅当字符串是回文的.Victor想玩n次.每次他都会做以下四种操作中的一种.操作1:在字符串的开头添加一个字符 c.操作2:在字符串的 ...
- 【剑指Offer面试编程题】题目1522:包含min函数的栈--九度OJ
题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为一个整数n(1<=n&l ...
- vim学习--usr03 moving around
Word movement 小写的"w""ge""e""b" w表示向后移动到一个单词开头 ge表示向前移动到一个单词末 ...
- Bootstrap入门(一)准备
Bootstrap入门(一)准备 网页的样式化与布局展示是很多开发者要面对的问题,目前有多的框架和工具包,可以使网页设计的任务变得更加简单.轻松.方便.快捷一些,其中,bootstra ...
- luogu P3358 最长k可重区间集问题
网络流建图好难,这题居然是网络流(雾,一般分析来说,有限制的情况最大流情况可以拆点通过capacity来限制,比如只使用一次,把一个点拆成入点出点,capacity为1即可,这题是限制最大k重复,可以 ...
- Day10 - C - Blow up the city HDU - 6604
Country A and B are at war. Country A needs to organize transport teams to deliver supplies toward s ...
- LINQ---查询表达式的结构
重要事项: 子句必须按照一定的顺序出现 from子句和select...group子句这两部分是必须的 其他子句是可选的 在LINQ查询表达式中,select子句在表达式最后. 可以后任意多的from ...
- JavaBean是什么
作者:杨博链接:https://www.zhihu.com/question/19773379/answer/31625054来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...