[省选前题目整理][BZOJ 1911][APIO 2010]特别行动队(斜率优化DP)
来源:互联网 发布:淘宝文案格式 编辑:程序博客网 时间:2024/05/21 06:29
题目链接
http://www.lydsy.com/JudgeOnline/problem.php?id=1911
思路
注:单调递减的队列里,相邻两个点的连线的斜率是单调递增的,即维护一个下凸壳
代码
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#define MAXN 1200000using namespace std;typedef long long int LL;LL f[MAXN],sum[MAXN],q[MAXN],a,b,c,n;double getSlope(int x,int y) //求(x,f[x])和(y,f[y])之间的斜率{ return (double)((f[x]+a*sum[x]*sum[x]-b*sum[x])-(f[y]+a*sum[y]*sum[y]-b*sum[y]))/(2*a*(sum[x]-sum[y]));}int main(){ scanf("%lld%lld%lld%lld",&n,&a,&b,&c); for(int i=1;i<=n;i++) { LL x; scanf("%lld",&x); sum[i]=sum[i-1]+x; } f[0]=0; int h=1,t=1; q[h]=0; for(int i=1;i<=n;i++) { while(h<t&&getSlope(q[h],q[h+1])<=sum[i]) h++; f[i]=f[q[h]]+a*(sum[i]-sum[q[h]])*(sum[i]-sum[q[h]])+b*(sum[i]-sum[q[h]])+c; while(h<t&&getSlope(q[t-1],q[t])>getSlope(q[t],i)) t--; q[++t]=i; //!!!! } printf("%lld\n",f[n]); return 0;}
0 0
- [省选前题目整理][BZOJ 1911][APIO 2010]特别行动队(斜率优化DP)
- BZOJ 1911 APIO 2010 特别行动队 斜率优化DP
- BZOJ 1911 特别行动队(斜率优化dp)
- bzoj 1911 [Apio2010]特别行动队斜率优化+DP
- 【bzoj 1911】 [Apio2010]特别行动队(斜率优化dp)
- bzoj 1911 [Apio2010]特别行动队(斜率优化+DP)
- [BZOJ 1911][Apio2010]特别行动队:DP斜率优化
- BZOJ 1911-特别行动队(DP+斜率优化)
- BZOJ 1911 [Apio2010]特别行动队 (斜率优化DP)
- [斜率DP优化]BZOJ 1911: [Apio2010]特别行动队 题解
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化dp]
- 【斜率DP】BZOJ 1911:特别行动队
- bzoj 1911 特别行动队 斜率优化
- [省选前题目整理][BZOJ 3675][APIO 2014]序列分割(斜率优化DP)
- 【bzoj 1911】【Apio2010】特别行动队 dp+单调队列斜率优化
- BZOJ 1911([Apio2010]特别行动队-斜率优化第一题)
- bzoj 1911: [Apio2010]特别行动队(斜率优化)
- bzoj 1911: [Apio2010]特别行动队 动态规划+斜率优化
- printWriter的write(String x)和println(String x)区别分析
- JAVA编程思想学习总结:第六章——访问权限控制
- 【线段树专题】poj1151
- LeetCode 119: Pascal's Triangle II
- 手机版支付宝转账截图生成器Q574651623
- [省选前题目整理][BZOJ 1911][APIO 2010]特别行动队(斜率优化DP)
- hdu 2141 Can you find it?(二分+枚举)
- POJ_1218_THE DRUNK JAILER
- Open CV3.0在vs2012下的配置
- SSH整合(三)——Spring声明式事务配置
- 好朋友请珍重
- 程序员修炼之路-(1)基础(中):性能分析
- android动态加载
- 个人对一级缓存,二级缓存的初步理解