bzoj1010: [HNOI2008]玩具装箱toy 斜率优化DP
2014-07-21 18:39
423 查看
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; #define maxn 510000 #define ll long long ll f[maxn],sum[maxn],q[maxn],x[maxn]; ll m,n,h,t,L; ll M(ll k) {return k*k;} double getk(ll k,ll j) { return (f[k]-f[j]+M(sum[k]+L)-M(sum[j]+L))/2.0/(sum[k]-sum[j]); } int main() { scanf("%lld%lld",&n,&L); L++; for(int i=1;i<=n;i++) { scanf("%lld",&x[i]); x[i]+=x[i-1]; sum[i]=x[i]+i; } q[1]=0; h=t=1; for(int i=1;i<=n;i++) { while(h<t&&getk(q[h+1],q[h])<double(sum[i]+1)) h++; f[i]=f[q[h]]+M(sum[i]-sum[q[h]]-L); while(h<t&&getk(q[t],q[t-1])>getk(i,q[t])) t--; q[++t]=i; } printf("%lld",f ); return 0; }斜率dp,涨姿势~
相关文章推荐
- BZOJ1010[HNOI2008]玩具装箱toy——斜率优化DP
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP
- bzoj1010 [HNOI2008]玩具装箱toy 斜率优化 DP
- BZOJ 1010 [HNOI2008]玩具装箱toy(斜率优化dp)
- 【BZOJ1010】【HNOI2008】玩具装箱toy(dp+斜率优化)
- 【bzoj1010】[HNOI2008]玩具装箱toy 斜率优化DP
- bzoj 1010 [HNOI2008]玩具装箱toy(DP的斜率优化)
- [BZOJ1010][HNOI2008]玩具装箱toy(斜率优化dp)
- [BZOJ1010][HNOI2008]玩具装箱toy(斜率优化dp)
- BZOJ 1010 [HNOI2008]玩具装箱toy 斜率优化DP
- bzoj 1010: [HNOI2008] 玩具装箱 toy [斜率优化dp] [动态规划]
- [BZOJ 1010] HNOI 2008 玩具装箱toy · 斜率优化DP
- BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化dp
- 斜率优化dp专题 & BZOJ1010 HNOI2008 玩具装箱toy
- BZOJ-1010 [HNOI2008]玩具装箱toy (DP斜率优化)
- BZOJ 1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
- _bzoj1010 [HNOI2008]玩具装箱toy【斜率优化dp】
- 【BZOJ】1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
- [bzoj1010] [HNOI2008]玩具装箱toy (斜率优化DP)
- [bzoj1010][HNOI2008] 玩具装箱toy DP斜率优化