bzoj 3156: 防御准备(斜率优化)
来源:互联网 发布:人工智能战机 编辑:程序博客网 时间:2024/06/06 02:14
3156: 防御准备
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 971 Solved: 457
[Submit][Status][Discuss]
Description
Input
第一行为一个整数N表示战线的总长度。
第二行N个整数,第i个整数表示在位置i放置守卫塔的花费Ai。
Output
共一个整数,表示最小的战线花费值。
Sample Input
10
2 3 1 5 4 5 6 3 1 2
Sample Output
18
HINT
1<=N<=10^6,1<=Ai<=10^9
Source
Katharon+#1
题解:斜率优化dp
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 1000003#define ll long longusing namespace std;ll n,a[N],f[N],q[N],dis[N],sum[N];ll K(ll j){return -dis[j];}ll B(ll j){return f[j]-sum[j]+dis[j]*j;}ll calc(ll j,ll i){return K(j)*(i-1)+B(j);}bool pd(ll x1,ll x2,ll x3){ll w1=(K(x1)-K(x3))*(B(x2)-B(x1));ll w2=(K(x1)-K(x2))*(B(x3)-B(x1));return w1>=w2;}int main(){scanf("%lld",&n);for (ll i=1;i<=n;i++) scanf("%lld",&a[n-i+1]);for (int i=1;i<=n;i++) dis[i]=i-1;for (int i=1;i<=n;i++) sum[i]=sum[i-1]+dis[i];ll head=0,tail=0;f[1]=a[1]; q[tail]=1; for (ll i=2;i<=n;i++) { while (head<tail&&calc(q[head],i)>=calc(q[head+1],i)) head++; f[i]=calc(q[head],i)+a[i]+sum[i-1]; if (i==n) { ll j=q[head]; ll t=f[j]+sum[i]-sum[j]-dis[j]*(i-j); f[i]=min(f[i],t); } while (head<tail&&pd(i,q[tail-1],q[tail])) tail--; tail++; q[tail]=i; }printf("%lld\n",f[n]);return 0;}
0 0
- bzoj 3156: 防御准备(斜率优化)
- BZOJ 3156 防御准备 斜率优化DP
- bzoj 3156 防御准备 斜率优化+DP
- [BZOJ 3156]防御准备(斜率优化DP)
- [BZOJ 3156]防御准备:DP斜率优化
- bzoj 3156 防御准备(斜率优化+DP)
- bzoj 3156: 防御准备(斜率DP)
- [BZOJ 3156] 防御准备 · 斜率优化DP
- BZOJ 3156 防御准备 动态规划+斜率优化
- 【BZOJ】【P3156】【防御准备】【题解】【斜率优化】
- 3156: 防御准备|DP|斜率优化
- [BZOJ3156]防御准备(斜率优化dp)
- bzoj3156: 防御准备(斜率优化+Dp)
- 斜率优化专题3——bzoj 3156 防御准备 题解
- bzoj3156 防御准备(斜率优化)
- bzoj3156 防御准备(斜率)
- bzoj3156: 防御准备 斜率优化DP
- 【BZOJ3156】防御准备 斜率优化DP
- leetcode——109——Convert Sorted List to Binary Search Tree
- hdu2147——kiki's game(博弈论)
- hibernate.cfg.xml配置文件的解释
- 【LeetCode】Contains Duplicate 解题报告
- 乔帮主告诉你什么是面向对象
- bzoj 3156: 防御准备(斜率优化)
- MySql: AUTO_INCREMENT
- hdu 2955 Robberies 01背包问题
- ITK/VTK管线执行进度值得获取 设置管线中断
- 抽象工厂模式
- How to Track Changes in Word 2016 Documents
- Java工程师成神之路
- ASP中页面之间传递值的几种方式
- 栈式自编码算法