bzoj 3437 小p的农场

思路

\(f[i]=min(f[j]+\sum\limits_{k=j+1}^{i}{b[k]*(i-k)}+a[i])\)

\(f[i]=min(f[j]+\sum\limits_{k=j+1}^{i}{(b[k]*i-b[k]*k)}+a[i])\)

再来前缀和处理一下就可以做到\(O(n^2)\)

\(f[i]=min(f[j]+(sum[i]-sum[j])*i-(sum\_k[i]-sum\_k[j])+a[i])\)

然后斜率优化加速

ps:斜率优化好多前缀和,都单调

\(f[i]=min(-sum[j]*i+sum[i]*i-sum\_k[i]+sum\_k[j]+a[i]+f[j])\)

\((-sum[j]*i+sum\_k[j]+f[j]) < (-sum[j]*i+sum\_k[j]+f[j])\)

\(sum\_k[j]-sum\_k[k]+f[j]-f[k] < (sum[j]-sum[k])*i\)

\(\frac{sum\_k[j]-sum\_k[k]+f[j]-f[k]}{(sum[j]-sum[k])} < i\)

错误原因

b[i]*i爆掉了,真的还是那句话,无处不炸longlong,气死啦

不过斜率优化真的模板哇

代码

#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
const int N=1e6+7;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
int n,q[N],a[N],b[N];
ll sum[N],sum_k[N],f[N];
double calc(int j,int k) {
return (double)(sum_k[j]-sum_k[k]+f[j]-f[k])/(double)(sum[j]-sum[k]);
}
int main() {
n=read();
for(int i=1;i<=n;++i) a[i]=read();
for(int i=1;i<=n;++i) {
b[i]=read();
sum[i]=sum[i-1]+b[i];
sum_k[i]=sum_k[i-1]+(ll)b[i]*i;
}
/*
//@baoli
f[0]=0;
for(int i=1;i<=n;++i) {
f[i]=inf;
for(int j=0;j<i;++j)
f[i]=min(f[i],f[j]+(sum[i]-sum[j])*i-(sum_k[i]-sum_k[j])+a[i]);
}
*/
int h=1,d=1;
for(int i=1;i<=n;++i) {
while(h<d && calc(q[h],q[h+1]) < i) h++;
f[i]=f[q[h]]+(sum[i]-sum[q[h]])*i-(sum_k[i]-sum_k[q[h]])+a[i];
while(h<d && calc(q[d],q[d-1]) >= calc(q[d],i)) d--;
q[++d]=i;
}
cout<<f[n]<<"\n";
return 0;
}

bzoj 3437 小p的农场的更多相关文章

  1. BZOJ 3437: 小P的牧场 斜率优化DP

    3437: 小P的牧场 Description 背景 小P是个特么喜欢玩MC的孩纸... 描述 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场 ...

  2. bzoj 3437: 小P的牧场 -- 斜率优化

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MB Description 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号), ...

  3. bzoj 3436小K的农场

    3436: 小K的农场 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2327 Solved: 1105 [Submit][Status][Discu ...

  4. [bzoj]3436 小K的农场

    [题目描述] 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述:农场a比农场b至少多种植了c个单位的 ...

  5. BZOJ 3437 小P的牧场(斜率优化DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3437 [题目大意] n个牧场排成一行,需要在某些牧场上面建立控制站, 每个牧场上只能建 ...

  6. BZOJ 3436: 小K的农场 差分约束

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3436 题解: 裸的差分约束: 1.a>=b+c  ->  b<=a-c ...

  7. BZOJ 3437: 小P的牧场

    传送门 显然考虑 $dp$,设 $f[i]$ 表示前 $i$ 个牧场都被控制的最小代价 那么枚举所有 $j<i$ ,$f[i]=f[j]+val[i][j]+A[i]$ $val[i][j]$ ...

  8. bzoj 3437: 小P的牧场【斜率优化】

    emmm妹想到要倒着推 先假设只在n建一个控制站,这样的费用是\( \sum_{i=1}^{n} b[i]*(n-i) \)的 然后设f[i]为在i到n键控制站,并且i一定建一个,能最多节省下的费用, ...

  9. 【BZOJ】3436: 小K的农场

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 938  Solved: 417[Submit][Status][Discuss ...

随机推荐

  1. Beta冲刺阶段3.0

    1. 提供当天站立式会议照片一张 2. 每个人的工作 (有work item 的ID) 成员 昨天已完成的工作 今天计划完成的工作 工作中遇到的困难 具体贡献 郑晓丽 完成"我的活动&quo ...

  2. 十 js中forEach,for in,for of循环的用法

    一.一般的遍历数组的方法: var array = [1,2,3,4,5,6,7]; for (var i = 0; i < array.length; i++) { console.log(i ...

  3. github常见错误提示之一

    如果输入$ Git remote add origin git@github.com:Jomsou(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remote o ...

  4. Java多线程-----理解CountDownLatch

       CountDownLatch简介  CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier.Semaphore.ConcurrentHa ...

  5. JavaScript--常用的输出方式

       1.alert("要输出的内容"); 在浏览器中弹出一个对话框,然后把要输出的内容展示出来    2.document.write("要输出的内容");  ...

  6. windows10 安装 mysql8.0.12 详解

    [1]下载安装包 官网下载地址:https://downloads.mysql.com/archives/community/ 如下图所示: 下载完成,安装包为mysql-8.0.12-winx64. ...

  7. mybatis源码解析5---SqlSession解析

    由之前解析可知,mybatis启动的时候会加载XML配置文件解析生成全局配置对象Configuration对象,SqlSessionFactoryBuilder类会根据Configuration对象创 ...

  8. PIVOT(透视转换)和UNPIVOT(逆透视转换)

    一.原数据状态 二.手动写透视转换1 三.手动写透视转换2 四.PIVOT(透视转换)和UNPIVOT(逆透视转换)详细使用 使用标准SQL进行透视转换和逆视转换 --行列转换 create tabl ...

  9. POJ 3624 Charm Bracelet (01背包)

    题目链接:http://poj.org/problem?id=3624 Bessie has gone to the mall's jewelry store and spies a charm br ...

  10. MaxiSYS Elite

    The Maxisys Elite is Autel UK’s top of the range diagnostic and analysis scanner with advanced J2534 ...