【动态规划16】bzoj1911 [Apio2010]特别行动队(斜率优化)
2017-06-17 12:17
337 查看
鸽了好多天啊..
显然的斜率优化问题
O(n^2)的动规方程很显然
f[i]=max(f[j]+a∗(pre[i]−pre[j])2+b∗(pre[i]−pre[j])+c)(j<=i)
设k<j<i,且从j转移比从k转移情况更优
即f[k]+a∗(pre[i]−pre[k])2+b∗(pre[i]−pre[k])<f[j]+a∗(pre[i]−pre[j])2+b∗(pre[i]−pre[j])
随便消一消,搞一搞
f[k]−2∗a∗pre[i]∗pre[k]−a∗pre[k]2−b∗pre[k]<f[j]−2∗a∗pre[i]∗pre[j]+a∗pre[j]2−b∗pre[j]
然后移个项
2∗a∗pre[i]∗(pre[j]−pre[k])<f[j]−f[k]+a∗pre[j]2−a∗pre[k]2−b∗pre[j]+b∗pre[k]
pre[i]<f[j]−f[k]+a∗(pre[j]2−pre[k]2)+b∗(pre[k]−pre[j])2∗a∗(pre[j]−pre[k])
之后就与http://blog.csdn.net/flanoc/article/details/73190005一样了(骗个点击量)
题目描述
输入输出格式
显然的斜率优化问题
O(n^2)的动规方程很显然
f[i]=max(f[j]+a∗(pre[i]−pre[j])2+b∗(pre[i]−pre[j])+c)(j<=i)
设k<j<i,且从j转移比从k转移情况更优
即f[k]+a∗(pre[i]−pre[k])2+b∗(pre[i]−pre[k])<f[j]+a∗(pre[i]−pre[j])2+b∗(pre[i]−pre[j])
随便消一消,搞一搞
f[k]−2∗a∗pre[i]∗pre[k]−a∗pre[k]2−b∗pre[k]<f[j]−2∗a∗pre[i]∗pre[j]+a∗pre[j]2−b∗pre[j]
然后移个项
2∗a∗pre[i]∗(pre[j]−pre[k])<f[j]−f[k]+a∗pre[j]2−a∗pre[k]2−b∗pre[j]+b∗pre[k]
pre[i]<f[j]−f[k]+a∗(pre[j]2−pre[k]2)+b∗(pre[k]−pre[j])2∗a∗(pre[j]−pre[k])
之后就与http://blog.csdn.net/flanoc/article/details/73190005一样了(骗个点击量)
#include<bits/stdc++.h> #define fer(i,j,n) for(int i=j;i<=n;i++) #define far(i,j,n) for(int i=j;i>=n;i--) #define ll long long const int maxn=1000010; const int INF=1e9+7; using namespace std; /*----------------------------------------------------------------------------*/ inline ll read() { char ls;ll x=0,sng=1; for(;ls<'0'||ls>'9';ls=getchar())if(ls=='-')sng=-1; for(;ls>='0'&&ls<='9';ls=getchar())x=x*10+ls-'0'; return x*sng; } /*----------------------------------------------------------------------------*/ ll n,a,b,c; ll pre[maxn],f[maxn]; ll q[maxn],h,t; ll calcK(int j,int k) { return (f[j]-f[k]+a*(pre[j]*pre[j]-pre[k]*pre[k])+b*(pre[k]-pre[j]))/(2*a*(pre[j]-pre[k])); } int main() { n=read(); a=read();b=read();c=read(); fer(i,1,n) pre[i]=read()+pre[i-1]; h=t=0; fer(i,1,n) { while(h<t&&calcK(q[h],q[h+1])<pre[i])h++; f[i]=f[q[h]]+a*(pre[i]-pre[q[h]])*(pre[i]-pre[q[h]])+b*(pre[i]-pre[q[h]])+c; while(h<t&&calcK(q[t-1],q[t])>calcK(q[t],i))t--; q[++t]=i; } cout<<f ; }
相关文章推荐
- bzoj 1911: [Apio2010]特别行动队(斜率优化)
- bzoj1911: [Apio2010]特别行动队 斜率优化DP
- BZOJ 1911([Apio2010]特别行动队-斜率优化第一题)
- BZOJ 1911: [Apio2010]特别行动队[斜率优化dp]
- [省选前题目整理][BZOJ 1911][APIO 2010]特别行动队(斜率优化DP)
- [BZOJ1010][HNOI2008]玩具装箱[BZOJ1911][APIO2010]特别行动队[BZOJ1492][NOI2007]货币兑换 斜率优化
- bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)
- Bzoj 1911: [Apio2010]特别行动队(斜率优化)
- bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)
- [BZOJ1911][Apio2010]特别行动队(斜率优化dp)
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
- BZOJ 1911: [Apio2010]特别行动队(斜率优化+DP)
- bzoj1911 [Apio2010]特别行动队(斜率优化)
- 【bzoj1911】【APIO2010】【特别行动队】【斜率优化】
- BZOJ 1911: [Apio2010]特别行动队(斜率优化)
- BZOJ 1911 APIO 2010 特别行动队 斜率优化DP
- 【BZOJ1911】【Apio2010】特别行动队,斜率优化DP裸题(斜率有单调性)
- BZOJ 1911: [Apio2010]特别行动队 斜率优化dp
- BZOJ 1911: [Apio2010]特别行动队 斜率优化dp
- BZOJ1911 [Apio2010]特别行动队 斜率优化