1010: [HNOI2008]玩具装箱toy DP+斜率优化+决策单调性
来源:互联网 发布:淘宝定制t恤好的店铺 编辑:程序博客网 时间:2024/04/28 11:03
好久没做斜率优化辣,突然发现Page1上有一道斜率优化的裸题,借此来回顾一下。
首先我们可以DP,令
我们维护
然后为表述方便,我们令
所以上式转化为
考虑这个方程有没有单调性:
设
移项:
我们令
这是一个看起来类似斜率的式子。
由于
然后就好啦~这是最裸的斜率优化+决策单调性辣。
#include<iostream>#include<cstdio>#define ll long long #define N 50005using namespace std;int n,L;int q[N];ll c[N],sum[N],X[N],Y[N],f[N],g[N];inline ll read(){ ll a=0,f=1; char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();} while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();} return a*f;}int main(){ n=read(); L=read(); for (int i=1;i<=n;i++) c[i]=read(),sum[i]=sum[i-1]+c[i]; int l=0,r=0; for (int i=1;i<=n;i++) { g[i]=sum[i]+i-L-1; while (l<r&&Y[q[l+1]]-Y[q[l]]<=2*(X[q[l+1]]-X[q[l]])*g[i]) l++; f[i]=Y[q[l]]+g[i]*g[i]-2*g[i]*X[q[l]]; X[i]=sum[i]+i; Y[i]=f[i]+X[i]*X[i]; while (l<r&&(Y[i]-Y[q[r]])*(X[q[r]]-X[q[r-1]])<=(Y[q[r]]-Y[q[r-1]])*(X[i]-X[q[r]])) r--; q[++r]=i; } cout << f[n] << endl; return 0;}
1 0
- 1010: [HNOI2008]玩具装箱toy DP+斜率优化+决策单调性
- [BZOJ1010][HNOI2008]玩具装箱(决策单调性/斜率优化DP)
- HNOI2008玩具装箱Toy 斜率优化DP
- BZOJ 斜率优化dp 1010: [HNOI2008]玩具装箱toy
- bzoj 1010 HNOI2008 玩具装箱toy 斜率优化+DP
- BZOJ 1010 [HNOI2008]玩具装箱toy(斜率优化dp)
- BZOJ 1010 [HNOI2008]玩具装箱toy 斜率优化DP
- 【bzoj 1010】[HNOI2008] 玩具装箱toy(斜率优化dp)
- BZOJ-1010 [HNOI2008]玩具装箱toy (DP斜率优化)
- 【BZOJ】1010 [HNOI2008] 玩具装箱toy dp+斜率优化
- BZOJ 1010 [HNOI2008]玩具装箱TOY (dp+斜率优化)
- BZOJ 1010 [HNOI2008]玩具装箱toy (斜率优化DP)
- Bzoj 1010[HNOI2008]玩具装箱toy【斜率优化Dp入门】
- 【BZOJ】1010 [HNOI2008] 玩具装箱toy 斜率优化DP
- 1010: [HNOI2008]玩具装箱toy 斜率优化
- HNOI2008——玩具装箱toy(斜率优化DP)
- bzoj1010: [HNOI2008]玩具装箱toy 斜率优化DP
- BZOJ1010 [HNOI2008]玩具装箱toy(斜率优化dp)
- Ext.net chart应用
- python 冒泡排序 选择排序 插入排序的对比分析
- GT9xx_Driver系列------如果修改config
- iOS 开发之动画篇 - Transform和KeyFrame动画
- 如何异步取消一个线程
- 1010: [HNOI2008]玩具装箱toy DP+斜率优化+决策单调性
- iOS自定义转场动画实战讲解
- 38. goldwater
- 安卓常见反破解方式
- LeetCode题解:Min Stack
- android浮层 图片拖动并且可点击
- 【总结】——2015下半年总结
- iOS 获取照相机实时预览图片
- centos 7管理命令整合经典