博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LOJ 10189 仓库建设 ——斜率优化dp
阅读量:7121 次
发布时间:2019-06-28

本文共 1081 字,大约阅读时间需要 3 分钟。

题目:

#include
#include
#include
#include
#define db double#define ll long longusing namespace std;const int N=1e6+5;int n,d[N],p[N],C[N];ll s[N],c[N],dp[N];int q[N],he,tl;int rdn(){ int ret=0;bool fx=1;char ch=getchar(); while(ch>'9'||ch<'0'){
if(ch=='-')fx=0;ch=getchar();} while(ch>='0'&&ch<='9') ret=(ret<<3)+(ret<<1)+ch-'0',ch=getchar(); return fx?ret:-ret;}ll Y(int a){
return dp[a]+c[a]*d[a]-s[a];}db slp(int u,int v){
return (db)(Y(v)-Y(u))/(d[v]-d[u]);}int main(){ n=rdn(); for(int i=1;i<=n;i++) d[i]=rdn(),p[i]=rdn(),C[i]=rdn(); for(int i=1;i<=n;i++) d[i]=d[n]-d[i]; for(int i=n;i>=0;i--) c[i]+=c[i+1]+p[i],s[i]=s[i+1]+(ll)p[i]*d[i]; he=1;q[tl=1]=n;dp[n]=C[n]; for(int i=n-1;i>=0;i--) { while(he
<=c[i+1])he++; int j=q[he]; dp[i]=dp[j]+c[j]*d[j]-s[j]-c[i+1]*d[j]+s[i+1]+C[i]; while(he
=slp(q[tl-1],i))tl--; q[++tl]=i; } printf("%lld\n",dp[0]); return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/9921600.html

你可能感兴趣的文章
SpringJDBC jdbcTemplate获取自增主键
查看>>
SpringMVC通过配置mvc:view-controller直接解析到视图页面
查看>>
解决vmware-tools 安装时出现的错误
查看>>
MICROSOFT-软件最终用户许可协议
查看>>
【NetApp】7-mode DNS配置
查看>>
悬浮滚动网站jquery在线客服
查看>>
mysql复制表(同一数据库,不同数据库)
查看>>
函数练习小结
查看>>
Linux用户权限设置
查看>>
centos6.5 安装nginx1.10
查看>>
oracle 11g r2 一键配置脚本
查看>>
amoeba和mysql_proxy分别实现mysql-5.6的读写分离+mysql主从复制
查看>>
高级Linux工程师常用软件清单
查看>>
一些程序设计的笔记
查看>>
软件定义其实是应用定义
查看>>
JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
查看>>
开源web 架构
查看>>
sscanf() 函数
查看>>
poj - 1061 青蛙的约会【扩展欧几里】
查看>>
通过调用firefox无法使用鼠标事件,解决办法
查看>>