BZOJ1096 [ZJOI2007]仓库建设(斜率优化dp)
来源:互联网 发布:unity塔防游戏源码 编辑:程序博客网 时间:2024/06/05 15:40
【题解】
显然,工厂n一定是要建设仓库的,可以设 f[i]:工厂i建设仓库时前i个工厂的最小花费
则:f[i]=min{ sigma( (xi-xk)*pk ) + f[j] +ci },0<=j<i,k从j+1循环到i设 s[i]=p[1]+p[2]+…+p[i],t[i]=x[1]*p[1]+x[2]*p[2]+…x[i]*+p[i]
则:f[i]=min{ xi*(si-sj) - (ti-tj) + f[j] +ci }
设 m[i]=f[i]+t[i]
斜率表示为:(m[j]-m[k])/(s[j]-s[k])
维护下凸壳,优化之即可
【代码】
#include<stdio.h>#include<stdlib.h>typedef long long LL;LL x[1000005],c[1000005],s[1000005],t[1000005],m[1000005],f[1000005];int q[1000005];double K(int j,int k){ return (double)(m[j]-m[k])/(double)(s[j]-s[k]);}int main(){ LL p; int n,i,head=0,tail=1; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%lld%lld%lld",&x[i],&p,&c[i]); s[i]=s[i-1]+p; t[i]=t[i-1]+x[i]*p; } for(i=1;i<=n;i++) { while(tail-head>=2&&K(q[head],q[head+1])<(double)x[i]) head++; f[i]=x[i]*(s[i]-s[q[head]])-(t[i]-t[q[head]])+f[q[head]]+c[i]; m[i]=f[i]+t[i]; while( tail-head >= 2 && K(q[tail-2],q[tail-1]) > (double)(m[q[tail-1]]-m[i])/(double)(s[q[tail-1]]-s[i]) ) tail--; q[tail++]=i; } printf("%lld",f[n]); return 0;}
0 0
- [BZOJ1096][ZJOI2007][DP][斜率优化]仓库建设
- bzoj1096: [ZJOI2007]仓库建设 斜率优化DP
- [BZOJ1096]ZJOI2007仓库建设|斜率优化DP
- 【bzoj1096】[ZJOI2007]仓库建设 斜率优化DP
- 【bzoj1096】【ZJOI2007】【仓库建设】【斜率优化dp】
- BZOJ1096: [ZJOI2007]仓库建设 斜率优化DP
- [斜率优化DP] BZOJ1096: [ZJOI2007]仓库建设
- 【斜率优化DP】BZOJ1096 [ZJOI2007]仓库建设
- bzoj1096[ZJOI2007]仓库建设 斜率优化dp
- BZOJ1096(ZJOI2007)仓库建设--斜率优化DP
- bzoj1096 [ZJOI2007]仓库建设 斜率优化dp
- BZOJ1096 [ZJOI2007]仓库建设(斜率优化dp)
- [BZOJ1096][ZJOI2007]仓库建设(斜率优化dp)
- 【bzoj1096】【ZJOI2007】仓库建设(dp+前缀和+斜率优化)
- bzoj1096 [ZJOI2007]仓库建设(斜率优化)
- 【BZOJ1096】[ZJOI2007]仓库建设【斜率优化】
- 【BZOJ1096】【ZJOI2007】仓库建设(斜率优化,动态规划)
- bzoj1096 [ZJOI2007]仓库建设(斜率)
- C++构造与析构(18) - 静态对象(static object)何时销毁
- 卡永久QQ飞车紫钻 记录
- android中TypedValue.applyDimension()介绍
- Codeforces Round #304 (Div. 2)
- OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
- BZOJ1096 [ZJOI2007]仓库建设(斜率优化dp)
- C++构造与析构(19) - 显式地调用构造函数和析构函数
- 内容提供者写法
- Windbg与虚拟机双机调试设置
- DisplayMetrics浅析
- C++继承(1) - 基类哪些数据会被子类继承下来?
- LeetCode 29 - Divide Two Integers
- 如DataView,我好操作,比如过滤,筛选数据等
- HDU 1251 统计难题