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;}/*//@baolif[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;
}

转载于:https://www.cnblogs.com/dsrdsr/p/10258849.html

bzoj 3437 小p的农场相关推荐

  1. BZOJ 3436: 小K的农场( 差分约束 )

    orz云神... 真的给跪了...BFS版spfa T 掉了...然后DFS版的就A了...我现在很迷茫.... 这就是个普通的差分约束... ---------------------------- ...

  2. [BZOJ]3436: 小K的农场

    题解:  差分约束 模板题 差分约束系统  联系 最短路 对于操作1:$ a-b\geqslant c\rightarrow b\leqslant a-c $ 也就是说a向b连一条-c的边 对于操作2 ...

  3. bzoj 3436: 小K的农场(差分约束)

    3436: 小K的农场 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1824  Solved: 810 [Submit][Status][Disc ...

  4. bzoj 3437: 小P的牧场(斜率DP)

    3437: 小P的牧场 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1493  Solved: 830 [Submit][Status][Disc ...

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

    Description 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个 ...

  6. P1993 小 K 的农场

    P1993 小 K 的农场 题解: 农场 a 比农场 b 至少多种植了 c 个单位的作物: 这句话说明:a - b > = c 转化可得 b - a < = - c add(a,b,-c) ...

  7. bzoj 4447 小凸解密码

    bzoj 4447 小凸解密码 先将原始状态的 \(B\) 处理出来,可以发现,若不修改,则每次指定的起始位置不同,对这个环 \(B\) 带来的影响只有 \(B_0\) 不同,即每次 \(B_0=A_ ...

  8. bzoj3436小K的农场

    bzoj3436小K的农场 题意: n个数,知道m条关系:a-b≥c.a-b≤c或a==b.问是否存在满足所有关系的情况.n≤10000,m≤10000. 题解: 差分约束.因为只要求是否满足,因此最 ...

  9. 【BZOJ - 3436】小K的农场(差分约束)

    题干: 背景 小K是个特么喜欢玩MC的孩纸... 描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形 ...

最新文章

  1. struts2 action重定向
  2. 8年,永洪科技凭什么跑出中国BI领军速度?
  3. python小波变换尺度函数_Python图像处理(17):pyWavelet
  4. VTK:可视化之SelectWindowRegion
  5. React个Vue的对比
  6. 【转】Android Camera 相机开发详解
  7. 网络协议分层及报文格式大全
  8. php static 访问,使用PHP访问Static方法的最佳方法
  9. ffmpeg添加到环境变量_Windows + MSVC环境编译ffmpeg
  10. Nginx启动后无法访问页面
  11. mysql查询数据不变_mysql之delete删除记录后数据库大小不变
  12. python访问文件被拒绝_python – uWSGI服务器日志…权限被拒绝读取文件…哪个文件?...
  13. 学习信号与系统的看过来~~
  14. 使用FlashBoot3.2c 将 U 盘制作成 DOS 启动盘
  15. 上计算机课应该有的表现,计算机应用基础学习过程表现
  16. Python海龟绘图
  17. 25行Java代码将普通图片转换为字符画图片和文本
  18. [iOS]-weak底层原理(sidetable相关,附带引用计数原理)
  19. WEB安全(十六)单点登录的基本实现
  20. 年包150万的腾讯程序员,深圳房产一千万,同学聚会只能排名第16!

热门文章

  1. java集群解析文件_java相关:springboot整合redis集群过程解析
  2. django web app_妹子用半天时间开发一个员工管理系统,没错django就是这么强悍
  3. latex中if语句怎么用_如果 (If) | Python 中的条件控制语句详解
  4. wps中下划线怎么也去不掉_黑头究竟怎么形成的?为什么总是去不掉?那是因为你用错方法...
  5. 计算机桌面程序经常打不开了,电脑开机后桌面软件打不开怎么办
  6. power bi 雷达图_【自助式数据分析平台——WonderBI(豌豆BI)】免费在线试用_软件库...
  7. bootstrap拖动div_BootStrap modal实现拖拽功能
  8. 瑞友客户端无法建立跟远程计算机的连接,瑞友天翼终端错误信息的原因以及解决方法大全.doc...
  9. Cmake构建_设置全局编译选项
  10. Linux编译Opencv3.4.7: relocation R_X86_64_PC32 against `ff_w_ff‘ can not be used when makin with -fPIC