洛谷P3195 [HNOI2008]玩具装箱TOY(BZOJ1010)
来源:互联网 发布:java如何定位内存泄露 编辑:程序博客网 时间:2024/06/07 08:00
斜率优化DP
洛谷题目传送门
BZOJ题目传送门
状态及转移很好想:
转移:
然而
假设对
记一个
记
左边
右边
联立后化简,得
然后用单调队列维护一下左边这个东西就行啦
代码:
#include<cstdio>#include<cstring>#include<algorithm>#define MAXN 50000 using namespace std;typedef long long LL;LL f[MAXN+5],c[MAXN+5],X[MAXN+5],Y[MAXN+5];int n,l,que[MAXN+5];#define sqr(x) ((x)*(x))LL K(int x,int y){ return (f[x]+sqr(Y[x])-f[y]-sqr(Y[y]))/(2*(Y[x]-Y[y]));//左边的式子}int main(){ scanf("%d%d",&n,&l); for (int i=1;i<=n;i++){ scanf("%lld",&c[i]),c[i]+=c[i-1]; X[i]=c[i]+i-1-l,Y[i]=c[i]+i; f[i]=1e18; } int r=0,w=0; for (int i=1;i<=n;i++){//单调队列维护 while (r<w&&K(que[r],que[r+1])<X[i]) r++; f[i]=f[que[r]]+sqr(X[i]-Y[que[r]]); while (r<w&&K(que[w-1],que[w])>=K(que[w],i)) w--; que[++w]=i; } return printf("%lld\n",f[n]),0;}
阅读全文
1 0
- 洛谷P3195 [HNOI2008]玩具装箱TOY(BZOJ1010)
- 【洛谷】P3195【HNOI2008】玩具装箱TOY
- P3195 [HNOI2008]玩具装箱TOY
- bzoj1010 [HNOI2008]玩具装箱toy(斜率)
- BZOJ1010[HNOI2008]玩具装箱toy
- 【bzoj1010】【HNOI2008】【玩具装箱toy】
- bzoj1010: [HNOI2008]玩具装箱toy
- [BZOJ1010][HNOI2008]玩具装箱toy
- [BZOJ1010][HNOI2008]玩具装箱toy
- bzoj1010【HNOI2008】玩具装箱 toy
- 【bzoj1010】[HNOI2008]玩具装箱toy
- bzoj1010: [HNOI2008]玩具装箱toy
- bzoj1010 [HNOI2008]玩具装箱toy
- 【bzoj1010】[HNOI2008]玩具装箱toy
- bzoj1010: [HNOI2008]玩具装箱toy
- [BZOJ1010][HNOI2008]玩具装箱toy
- BZOJ1010 [HNOI2008]玩具装箱toy
- BZOJ1010--HNOI2008--玩具装箱Toy
- java 冒泡排序二分查找
- 对java基础课上的问题的经验性回答
- rex 切换到oracle用户执行脚本
- tomcat7安装 配置
- pandas 中Series的map函数
- 洛谷P3195 [HNOI2008]玩具装箱TOY(BZOJ1010)
- hadoop集群中安装hive+mysql
- ReactNative Component 生命周期
- JDBC执行存储过程的四种情况
- 日语学习
- redis学习(八)——redis应用场景
- SpringMVC-1-没有对比,就没有伤害啊~
- 虚拟地址到物理地址
- 数据库小结