【BZOJ3437】小P的牧场,斜率优化DP
来源:互联网 发布:淘宝客 返利网 编辑:程序博客网 时间:2024/05/16 15:49
传送门
写在前面:感觉线性基太蛋疼了
思路:
原始方程
用前缀和优化
其中
复杂度
设x>y且x转移i比y转移i优,则有
注意:数据范围不全,a,b也属于long long范围
代码:
#include<bits/stdc++.h>#define LL long long#define M 1000003using namespace std;LL in(){ LL t=0;char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') t=(t<<3)+(t<<1)+ch-48,ch=getchar(); return t;}int n,head=1,tail=1,q[M];LL a[M],b[M],f[M],sum1[M],sum2[M];double Get(int x,int y){ return (double)(f[x]+sum2[x]-f[y]-sum2[y])/(double)(sum1[x]-sum1[y]);}main(){ n=in(); for (int i=1;i<=n;i++) a[i]=in(); for (int i=1;i<=n;i++) b[i]=in(), sum1[i]=sum1[i-1]+b[i], sum2[i]=sum2[i-1]+b[i]*i; for (int i=1;i<=n;i++) { while (head<tail&&Get(q[head+1],q[head])<i) head++; f[i]=f[q[head]]+(sum1[i]-sum1[q[head]])*i-(sum2[i]-sum2[q[head]])+a[i]; while (head<tail&&Get(i,q[tail])<Get(q[tail],q[tail-1])) tail--; q[++tail]=i; } printf("%lld",f[n]);}
0 0
- 【bzoj3437】【小p的牧场】【斜率优化dp】
- 【BZOJ3437】小P的牧场,斜率优化DP
- [BZOJ3437]小P的牧场(斜率优化dp)
- BZOJ3437: 小P的牧场 斜率优化DP
- BZOJ3437 小P的牧场 【斜率优化dp】
- [bzoj3437][dp+斜率优化]小P的牧场
- [BZOJ3437] 小P的牧场 && 斜率优化
- 【斜率优化】[BZOJ3437] 小P的牧场
- BZOJ3437 小P的牧场 斜率优化
- bzoj3437小P的牧场(斜率优化)
- 【BZOJ3437】小P的牧场 斜率优化 动态规划
- 【动态规划24】bzoj3437小P的牧场(dp+斜率优化)
- [BZOJ3437]小P的牧场
- [BZOJ3437] 小P的牧场
- bzoj3437 小P的牧场
- BZOJ3437 小P的牧场
- bzoj3437 小P的牧场
- [bzoj3437] 小P的牧场
- BZOJ1071 [SCOI2007]组队
- 关于java单例模式实现
- RecyclerView的简单使用
- android从自己的应用打开邮箱和QQ
- xml之SAX,DOM,PULL解析
- 【BZOJ3437】小P的牧场,斜率优化DP
- 如何取消或定制当点击GridView 的时候出现的那个黄色背景
- nyoj_57 6174问题
- nginx代理weblogic负载方案
- 关于cocos2dx widget窗口中的关闭按钮 删除自身 的时候崩溃bug
- ubuntu16.04 server64 busybox-initramfs安装失败
- OMAPL138 定位系统开发(一)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- odex知多少