bzoj1911: [Apio2010]特别行动队
来源:互联网 发布:ubuntu 16 搜狗 编辑:程序博客网 时间:2024/04/28 03:45
1911: [Apio2010]特别行动队
Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4098 Solved: 1938
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
-1 10 -20
2 2 3 4
Sample Output
HINT
Source
f[i]记录选择i个士兵的最大值
sum[i]=x[1]+x[2]+……x[i-1]+x[i];
f[i]=max(f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c)
推斜率方程
j<k<i
f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c <= f[k]+a*(sum[i]-sum[k])^2+b*(sum[i]-sum[k])+c
f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j]) <= f[k]+a*(sum[i]-sum[k])^2+b*(sum[i]-sum[k])
f[j]-a*2*sum[i]*sum[j]+a*sum[j]*sum[j]-b*sum[j] <= f[k]-a*2*sum[i]*sum[k]+a*sum[k]*sum[k]-b*sum[k]
f[j]-f[k]+a*sum[j]^2-a*sum[k]^2-b*sum[j]+b*sum[k] <=a*2*sum[i]*sum[j]-a*2*sum[i]*sum[k]
the same <= sum[i]*2*a*(sum[j]-sum[k])
the same / (2*a*(sum[j]-sum[k])) <=sum[i]
( f[j]-f[k]+a*sum[j]^2-a*sum[k]^2-b*sum[j]+b*sum[k] )/( 2*a*sum[j]-2*a*sum[k] ) <= sum[i]
SO
slope(j,k)<sum[i]
#include<cstdio>#include<cstdlib>#include<cstring>#define LL long longconst int maxn=1000005;int n,a,b,c;LL sum[maxn],f[maxn],q[maxn];double slope(int j1,int j2){LL x1,x2,y1,y2;x1=2*a*sum[j1];x2=2*a*sum[j2];y1=f[j1]+a*sum[j1]*sum[j1]-b*sum[j1];y2=f[j2]+a*sum[j2]*sum[j2]-b*sum[j2];return (y2-y1)/(x2-x1);}int main(){scanf("%d %d %d %d",&n,&a,&b,&c);sum[0]=0;for(int i=1;i<=n;i++){scanf("%lld",&sum[i]);;sum[i]+=sum[i-1];}int l=1,r=1;q[1]=0;for(int i=1;i<=n;i++){while(l<r && slope(q[l],q[l+1])<sum[i]) l++;int j=q[l];f[i]=f[j]+a*(sum[i]-sum[j])*(sum[i]-sum[j])+b*(sum[i]-sum[j])+c;while(l<r && slope(q[r-1],q[r])>slope(q[r],i)) r--;q[++r]=i;}printf("%lld",f[n]);return 0;}
- [Bzoj1911][Apio2010]特别行动队
- bzoj1911 [Apio2010]特别行动队
- APIO2010特别行动队bzoj1911
- [BZOJ1911][Apio2010]特别行动队
- [BZOJ1911] [Apio2010]特别行动队
- BZOJ1911: [Apio2010]特别行动队
- bzoj1911【APIO2010】特别行动队
- BZOJ1911 Apio2010 特别行动队
- bzoj1911[Apio2010] 特别行动队
- 【APIO2010】bzoj1911 特别行动队
- bzoj1911: [Apio2010]特别行动队
- bzoj1911: [Apio2010]特别行动队
- bzoj1911 [Apio2010]特别行动队
- 【BZOJ1911】【APIO2010】特别行动队
- BZOJ1911: [Apio2010]特别行动队
- 【bzoj1911】【APIO2010】【特别行动队】【斜率优化】
- 【bzoj1911】[Apio2010]特别行动队commando
- BZOJ1911 [Apio2010]特别行动队 斜率优化
- Android性能优化-使用SparseArray|ArrayMap替代HashMap
- 深入编辑器
- C 语言单例的一种实现
- 51nod 1307 绳子与重物【二分+Dfs】
- 【Matplotlib】 移动spines
- bzoj1911: [Apio2010]特别行动队
- 数据库隔离级别---学习笔记
- 1130笔记
- 求一个字符串中大写字母的个数
- GIT第四讲 文件的修改和还原
- 使用Unity3D的50个技巧:Unity3D最佳实践
- Access数据库操作类
- 小博老师解析Ajax核心技术 ——Ajax原理及优缺点
- 通俗理解神经网络之激励函数(Activation Function)