P2120 [ZJOI2007]仓库建设

怎么说呢?算是很水的题了吧...

只要不要一开始就把dp想错就行...

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+10;
const ll INF=2e18;
ll n,f[N],x[N],p[N],c[N],q[N],l,r,sum[N],sump[N];//f[i][0/1]表示i及之后的工厂产品
inline int read()//i工厂建仓库的最小代价
{
int x=0,ff=1;
char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') ff=-1;ch=getchar();}
while(isdigit(ch)) {x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*ff;
}
inline double X(int i) {return sump[i];}
inline double Y(int i) {return f[i]+sum[i];}
inline double xie(int i,int j) {return (Y(i)-Y(j))/(X(i)-X(j));}
int main()
{
// freopen("1.in","r",stdin);
n=read();
for(int i=1;i<=n;++i) x[i]=read(),p[i]=read(),c[i]=read();
for(int i=1;i<=n;++i) sum[i]=sum[i-1]+x[i]*p[i],sump[i]=sump[i-1]+p[i];
for(int i=1;i<=n;++i) f[i]=INF;
f[0]=0;
for(int i=1;i<=n;++i)
{
while(l<r&&xie(q[l],q[l+1])<=x[i]) ++l;
int j=q[l];
f[i]=f[j]+(sump[i-1]-sump[j])*x[i]-(sum[i-1]-sum[j])+c[i];
while(l<r&&xie(i,q[r])<=xie(q[r],q[r-1])) --r;
q[++r]=i;
//for(int j=0;j<i;++j) f[i]=min(f[i],f[j]+(sump[i-1]-sump[j])*x[i]-(sum[i-1]-sum[j]));
//f[i]+=c[i];
}
printf("%lld",f[n]);
return 0;
}

最新文章

  1. Alpha阶段第八次Scrum Meeting
  2. 【python】调用机器喇叭发出蜂鸣声(Beep)
  3. 关于在listView中优化的问题 更多方
  4. c++新特性与boost
  5. emulator: ERROR: Unable to load VM from snapshot. The snapshot has been saved for a different hardware configuration.
  6. yii2 文件上传
  7. 每天一道LeetCode--389. Find the Difference
  8. 实现Android K的伪沉浸式
  9. 数据结构之顺序表,c#实现
  10. 各硬件装置在 Linux 中的文件名(笔记)
  11. luogu 1772 物流运输 ZJOI2006 spfa+dp
  12. python面试
  13. 堆+建堆、插入、删除、排序+java实现
  14. 移动端meta行大全
  15. 【BZOJ】1294: [SCOI2009]围豆豆Bean
  16. Oracle故障排查之oracle解决锁表问题
  17. Codeforces gym101955 A【树形dp】
  18. 20135239 益西拉姆 linux内核分析 扒开系统调用的三层皮(下)
  19. solr特点九:word(分词)
  20. Promise 的应用

热门文章

  1. 论文解读(DGI)《DEEP GRAPH INFOMAX》
  2. Nginx系列(3)- 负载均衡
  3. Jmeter系列(28)- 性能指标(1) | 常见性能指标
  4. Java 知识点 列表
  5. python学习笔记(八)-模块
  6. python风格对象
  7. python3中文乱码解决方法
  8. YbtOJ#752-最优分组【笛卡尔树,线段树】
  9. P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
  10. Python+requests环境搭建和GET基本用法