3437: 小P的牧场
来源:互联网 发布:淘宝旺旺聊天怎么撤销 编辑:程序博客网 时间:2024/05/01 18:20
斜率优化什么的真心无脑。
令sum[i]=sigma(b[k])(k<=i) mul[i]=sigima(k*b[k])(k<=i)。
则f[i]=min(f[j]+i*(sum[i]-sum[j])-mul[i]+mul[j])(j<i)
单调队列维护就好了。
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N=1000000+5;typedef long long ll;ll f[N],sum[N],mul[N],a[N],b;int q[N];double slop(int j,int k){return (double)(f[j]+mul[j]-f[k]-mul[k])/(double)(sum[j]-sum[k]);}int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lld",&a[i]);for(int i=1;i<=n;i++){scanf("%lld",&b);sum[i]=sum[i-1]+b;mul[i]=mul[i-1]+b*i;}int h=1,t=1;q[1]=0;for(int i=1;i<=n;i++){while(h<t&&slop(q[h+1],q[h])<i)h++;int j=q[h];f[i]=f[j]+i*(sum[i]-sum[j])-mul[i]+mul[j]+a[i];while(h<t&&slop(q[t-1],q[t])>slop(q[t],i))t--;q[++t]=i;}printf("%lld",f[n]);return 0;}
0 0
- 3437: 小P的牧场
- 3437: 小P的牧场
- 3437: 小P的牧场
- bzoj 3437: 小P的牧场
- 【DP】 BZOJ 3437: 小P的牧场
- BZOJ 3437 小P的牧场
- bzoj 3437: 小P的牧场
- bzoj 3437: 小P的牧场
- 【bzoj 3437】小P的牧场
- BZOJ 3437: 小P的牧场
- [BZOJ3437]小P的牧场
- [BZOJ3437] 小P的牧场
- bzoj3437 小P的牧场
- BZOJ3437 小P的牧场
- bzoj3437 小P的牧场
- [bzoj3437] 小P的牧场
- BZOJ3437: 小P的牧场
- BZOJ3437: 小P的牧场
- Android自定义上拉控件SpringView
- ldpi mdpi hdpi xhdpi xxhdpi的区别
- 怎样使用jquery刷新验证码图片
- 比较两个数的大小
- MalformedJsonException with Retrofit API?
- 3437: 小P的牧场
- JAVA 利用Arraylist.sort()进行排序的实现。(comparable接口的实现)
- swift学习记录(泛型)
- 如何修改drawabletop图片的文件大小
- 违反并发性: UpdateCommand影响了预期 1 条记录中的 0 条
- n-armed bandit_Gittins index
- [消息传递之一]-NSNotification练习
- API Level和版本的对应关系
- 移动端的一些常用css的设置