博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1180 斜率优化dp
阅读量:7210 次
发布时间:2019-06-29

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

这个题目要是顺着dp的话很难做,但是倒着推就很容易退出比较简单的关系式了。

dp[i]=min(dp[u]+(sum[u-1]-sum[i-1]+s)*f[i]);dp[i]代表从i到结尾需要花费的代价,sum[i]表示1到i的时间和,f[i]代表i到n的代价和。

然后对于i状态来说,j由于k等价于 (dp[j]-dp[k])/(sum[k-1]-sum[j-1])<f[i] 

然后f[i]随着i递减而递增,所以就可以利用斜率优化的办法来搞了。

 

#include 
#include
#include
using namespace std;const int maxn=1e4+9;long long sum[maxn],f[maxn];long long dp[maxn];int que[maxn];bool chk1(int k,int j,int i){ return (dp[j]-dp[k])
((dp[i]-dp[j])*(sum[k-1]-sum[j-1]));}int main(){ int n,s; while(scanf("%d %d",&n,&s)!=EOF) { sum[0]=0; for(int i=1;i<=n;i++) { scanf("%lld %lld",&sum[i],&f[i]); sum[i]+=sum[i-1]; } for(int i=n-1;i>=1;i--) f[i]+=f[i+1]; int front=1,end=0; que[++end]=n+1; dp[n+1]=0; for(int i=n;i>=1;i--) { while(front

 

 

转载地址:http://dvrum.baihongyu.com/

你可能感兴趣的文章
python 一些魔法
查看>>
机器学习中的相似性度量 (转)
查看>>
Entity Framewor 学习笔记 (碎碎的东西)
查看>>
遍历二叉查找树
查看>>
程承熊LEE微购店的买家秀
查看>>
Python 十九天
查看>>
iframe父窗口和子窗口函数互相调用的方法
查看>>
jAVA中的构造函数
查看>>
洛谷P1712 区间
查看>>
Fetch API
查看>>
lamp安装网站
查看>>
mysql 中判断表是否存在 以及表存在则删除
查看>>
产品经理能力框架图
查看>>
node的基本操作、文件路径、文件读、取、目录读取删
查看>>
《我是一只IT小小鸟》读后感
查看>>
JS导出excel 兼容ie、chrome、firefox
查看>>
一个程序员的程序开发Roadmap【转】
查看>>
TcpSendRcv方法笔记1
查看>>
11gR2 新特性: Rebootless Restart
查看>>
Algs4-2.3.28递归深度
查看>>