bzoj 1096: [ZJOI2007]仓库建设【斜率优化】
好眼熟啊
直接dp显然很难算,所以设val为只在n点建一个仓库的费用,然后设f[i]为在i~n点建若干仓库并且i点一定建一个仓库的最大省钱数
转移很显然,设s为p的前缀和,f[i]=max{f[j]+s[i]*(x[j]-x[i])}-a[i]
然后推转移
\]
\]
k=-s[i],x=x[j],b=f[j],y=f[j]-s[i]*x[i]-a[i],斜率优化转移即可
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1000005;
int n,q[N],l,r;
long long x[N],p[N],s[N],a[N],f[N],val,mx;
int read()
{
	int r=0,f=1;
	char p=getchar();
	while(p>'9'||p<'0')
	{
		if(p=='-')
			f=-1;
		p=getchar();
	}
	while(p>='0'&&p<='9')
	{
		r=r*10+p-48;
		p=getchar();
	}
	return r*f;
}
double wk(int j,int k)
{
	return (double)(f[k]-f[j])/(double)(x[k]-x[j]);
}
int main()
{
	n=read();
	for(int i=1;i<=n;i++)
		x[i]=read(),p[i]=read(),s[i]=s[i-1]+p[i],a[i]=read();
	for(int i=1;i<=n;i++)
		val+=p[i]*(x[n]-x[i]);
	val+=a[n];//cerr<<val<<endl;
	l=r=1,q[1]=n;
	for(int i=n-1;i>=1;i--)
	{
		while(l<r&&wk(q[l],q[l+1])<-s[i])
			l++;
		f[i]=f[q[l]]+s[i]*(x[q[l]]-x[i])-a[i];//cerr<<i<<" "<<f[i]<<endl;
		mx=max(mx,f[i]);
		while(l<r&&wk(q[r-1],q[r])>wk(q[r],i))
			r--;
		q[++r]=i;
	}
	printf("%lld\n",val-mx);
	return 0;
}
												
											bzoj 1096: [ZJOI2007]仓库建设【斜率优化】的更多相关文章
- BZOJ 1096: [ZJOI2007]仓库建设 [斜率优化DP]
		
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4201 Solved: 1851[Submit][Stat ...
 - bzoj-1096 1096: [ZJOI2007]仓库建设(斜率优化dp)
		
题目链接: 1096: [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L ...
 - bzoj 1096: [ZJOI2007]仓库建设 斜率優化
		
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2242 Solved: 925[Submit][Statu ...
 - BZOJ 1096 ZJOI2007 仓库建设 边坡优化
		
标题效果:特定n植物,其中一些建筑仓库,有一点使,假设没有仓库仓库向右仓库.最低消费要求 非常easy边坡优化--在此之前刷坡优化的情况下,即使这道题怎么错过 订购f[i]作为i点建设化妆i花费所有安 ...
 - bzoj 1096 [ZJOI2007]仓库建设(关于斜率优化问题的总结)
		
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3234 Solved: 1388[Submit][Stat ...
 - BZOJ 1096: [ZJOI2007]仓库建设( dp + 斜率优化 )
		
dp(v) = min(dp(p)+cost(p,v))+C(v) 设sum(v) = ∑pi(1≤i≤v), cnt(v) = ∑pi*xi(1≤i≤v), 则cost(p,v) = x(v)*(s ...
 - 边坡优化主题5——bzoj 1096 [ZJOI2007]仓库建设 解决问题的方法
		
[原标题] 1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1998 Solved: 816 [id=10 ...
 - bzoj1096[ZJOI2007]仓库建设 斜率优化dp
		
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5482 Solved: 2448[Submit][Stat ...
 - 【BZOJ1096】[ZJOI2007]仓库建设 斜率优化
		
[BZOJ1096][ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司 ...
 - BZOJ 1096 [ZJOI2007]仓库建设(斜率优化DP)
		
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1096 [题目大意] 有个斜坡,有n个仓库,每个仓库里面都有一些物品,物品数目为p,仓库 ...
 
随机推荐
- ATcoder 2000 Leftmost Ball
			
Problem Statement Snuke loves colorful balls. He has a total of N×K balls, K in each of his favorite ...
 - linux显示系统时间
			
date 查看系统时间 设置系统时间 # date --set “09/17/10 11:50" (月/日/年时:分:秒) # clock –systohc 将系统时间写入硬件时间
 - 【APUE】一个fork的面试题及字符设备、块设备的区别
			
具体内容见:http://coolshell.cn/articles/7965.html 字符设备.块设备主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然, ...
 - 【转】Linux下添加新硬盘,分区及挂载
			
原文:http://blog.chinaunix.net/uid-25829053-id-3067619.html ------------------------------------------ ...
 - centos  安装python2.7
			
安装pip sudo yum -y install epel-release sudo yum -y install python-pip 下载解压Python-2.7.3 #wget http:// ...
 - sdk manager 创建的虚拟机启动的时候总是在Android字样解决
			
一直显示Android字样.仅仅须要删除文件夹下的snapshots.img 找到sdk的文件夹下的\tools\lib\emulator,然后删除上面的文件snapshots.img就可以,我的sd ...
 - 【Mongodb教程 第九课 】MongoDB 删除文档
			
remove() 方法 MongoDB的 remove() 方法用于从集合中删除文档.remove() 方法接受两个参数.第一个是删除criteria ,第二是justOne标志: deletion ...
 - 【Java集合源代码剖析】HashMap源代码剖析
			
转载请注明出处:http://blog.csdn.net/ns_code/article/details/36034955 您好,我正在參加CSDN博文大赛,假设您喜欢我的文章.希望您能帮我投一票.谢 ...
 - Swift基础一(代码)
			
import Foundation println("Hello, World!") var string1 = "Hello BeiJing" //定义一个变 ...
 - [LeetCode][Java] Roman to Integer
			
题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...