bzoj3156: 防御准备 斜率优化DP
2014-07-22 11:29
218 查看
斜率优化dp,直接推公式。其实斜率优化dp除了推公式,什么都没有了。
/************************************************************** Problem: 3156 User: xujiahe Language: C++ Result: Accepted Time:3632 ms Memory:27052 kb ****************************************************************/ #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #include <cmath> using namespace std; #define ll long long #define maxn 1100000 ll f[maxn],a[maxn],q[maxn],n,m,h,t; double getk(ll k,ll j) { double tmp=(2.0*(f[k]-f[j])-j*(j+1)+k*(k+1))/(2.0*(k-j)); return tmp; } int main() { scanf("%lld",&n); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); } ll tmp; for (int i=1;i<=n/2;i++) { tmp=a[i]; a[i]=a[n-i+1]; a[n-i+1]=tmp; } f[1]=a[1]; q[1]=1; h=t=1ll; ll ans=a[1]+1ll*n*(n-1)/2ll; for(int i=2;i<=n;i++) { while(h<t&&getk(q[h+1],q[h])<i) h++; f[i]=f[q[h]]+1ll*(i-q[h])*(i-q[h]-1)/2+a[i]; ans=min(ans,f[i]+1ll*(n-i)*(n-i+1)/2); while(h<t&&getk(q[t],q[t-1])>getk(i,q[t])) t--; q[++t]=i; } printf("%lld",ans); return 0; }
相关文章推荐
- BZOJ3156: 防御准备 【斜率优化dp】
- BZOJ3156: 防御准备 【斜率优化dp】
- 【bzoj3156】防御准备 斜率优化dp
- BZOJ3156 防御准备 水水的斜率优化(斜率优化总结)
- [bzoj3156] 防御准备 DP斜率优化
- BZOJ 3156 防御准备 斜率优化DP
- 【BZOJ3156】防御准备 斜率优化DP
- [BZOJ 3156]防御准备:DP斜率优化
- [BZOJ 3156] 防御准备 · 斜率优化DP
- 3156: 防御准备|DP|斜率优化
- BZOJ 3156: 防御准备 斜率优化DP
- [bzoj3156][dp+斜率优化]防御准备
- bzoj 3156: 防御准备【斜率优化dp】
- 【BZOJ3156】防御准备,斜率优化DP
- 【BZOJ-3156】防御准备 DP + 斜率优化
- 斜率优化专题3——bzoj 3156 防御准备 题解
- bzoj3156(斜率优化DP)
- 【BZOJ3156】防御准备 斜率优化
- 【BZOJ】【P3156】【防御准备】【题解】【斜率优化】
- bzoj 1597 土地购买(斜率优化dp)