bzoj1010(斜率优化)
来源:互联网 发布:淘宝产品参数如何设置 编辑:程序博客网 时间:2024/06/05 08:02
裸的斜率优化
刚开始我还很脑残的就把那个基本的式子带进去推(斜率式)了。。。可是那个实在是太复杂了,由此说明,如果我们可以尝试通过一些方法将式子简化,再代入斜率优化来推。
比如本题:容器长度x=j-i+Sigma(Ck) ,他是说,每一个玩具之间都要加一个单位长度隔开,其实就当玩具长度加一,一个组合的长度就是总长度-1(因为间隔数是玩具数-1)所以间隔要少一个。
这叫,优化dp的式子把,如果很麻烦的式子应该就是需要优化一下
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<cstdlib>using namespace std;typedef long long ll;const int N=60005;ll f[N],sum[N],L;int n,q[N],head,tail;ll getup(int j){return f[j]+(sum[j]+1)*(sum[j]+1)+2*L*sum[j];}ll getup(int j,int k){return getup(j)-getup(k);}ll getdown(int j,int k){return sum[j]-sum[k];}ll getdp(int i,int j){return f[j]+(sum[i]-sum[j]-1-L)*(sum[i]-sum[j]-1-L);}int main(){scanf("%d%lld",&n,&L);for (int i=1;i<=n;i++) scanf("%lld",&sum[i]),sum[i]++;for (int i=1;i<=n;i++) sum[i]+=sum[i-1];head=tail=1;q[1]=0;for (int i=1;i<=n;i++){while (head<tail &&getup(q[head+1],q[head])<2*sum[i]*getdown(q[head+1],q[head])) head++;f[i]=getdp(i,q[head]);while (head<tail &&getup(i,q[tail])*getdown(q[tail],q[tail-1])<getup(q[tail],q[tail-1])*getdown(i,q[tail]) ) tail--;q[++tail]=i;}printf("%lld",f[n]);return 0;}
0 0
- bzoj1010(斜率优化)
- 玩具装箱BZOJ1010 斜率优化
- BZOJ1010 [HNOI2008]玩具装箱toy(斜率优化dp)
- [BZOJ1010][HNOI2008]玩具装箱toy(斜率优化)
- [BZOJ1010][HNOI2008]玩具装箱toy(斜率优化dp)
- 【BZOJ1010】【HNOI2008】玩具装箱toy(dp+斜率优化)
- bzoj1010 toy玩具装箱 (斜率优化dp)
- bzoj1010 [HNOI2008]玩具装箱toy(斜率优化)
- bzoj1010 [HNOI2008]玩具装箱toy(斜率优化DP)
- bzoj1010: [HNOI2008]玩具装箱toy(斜率优化)
- [BZOJ1010] 玩具装箱toy && 斜率优化
- [BZOJ1010]HNOI2008玩具装箱|斜率优化DP
- 【bzoj1010】【斜率优化】【HNOI2008】玩具装箱toy
- [HNOI2008][BZOJ1010] 玩具装箱toy - 斜率优化
- 【bzoj1010】【HNOI2008】【玩具装箱toy】【斜率优化】
- 【BZOJ1010】【codevs1319】玩具装箱,斜率优化DP
- 【bzoj1010】玩具装箱toy 斜率优化dp
- [BZOJ1010][HNOI2008]玩具装箱toy-斜率优化
- LA3905-Meteor(扫描线)
- C++防止误输的处理
- Hadoop RPC
- 用纯css3绘制三角形的原理
- 静态导入
- bzoj1010(斜率优化)
- 缓存区 NSData 与 NSMutableDate
- ASP、JSP、PHP 三种技术比较
- RxJava 浅显学习
- 拓扑排序:Kahn算法
- javase重新开始系列之log4j
- APP提现之微信商户号企业付款
- php常用函数
- c++ Array的使用方法