BZOJ1096_仓库建设_KEY
一道斜率优化的题目,加深了印象。
设sum[i]=∑p[i],S[i]=∑p[i]*x[i]。
暴力方程加前缀和优化:
f[i]=min(f[j]+c[i]+(sum[i]-sum[j])*x[i]-(S[i]-S[j])};
然后变形:
f[j]+c[i]+sum[i]*x[i]-(S[i]-S[j])=x[i]*sum[j]+f[i]
y =k x +b
求最小截距,因为k单调,所以是个下凸包,单调队列维护。
//红体字在y相减时会抵消,所以无影响。
code:
/**************************************************************
Problem: 1096
User: yekehe
Language: C++
Result: Accepted
Time:1100 ms
Memory:47796 kb
****************************************************************/
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
char tc()
{
static char tr[],*A=tr,*B=tr;
return A==B&&(B=(A=tr)+fread(tr,,,stdin),A==B)?EOF:*A++;
}
int read()
{
char c;while(c=tc(),c<''||c>'');
int x=c-'';while(c=tc(),c>=''&&c<='')x=x*+c-'';
return x;
}
const int MAXN=;
ll N,x[MAXN],p,c[MAXN];
ll sum[MAXN],S[MAXN],f[MAXN];
ll l[MAXN],h,t;
double X(int i){return sum[i];}
double Y(int i){return f[i]+S[i];}
double get(int x,int y){return (Y(y)-Y(x))/(X(y)-X(x));}
int main()
{
N=read();
register int i,j;
for(i=;i<=N;i++){
x[i]=read(),p=read(),c[i]=read();
sum[i]=sum[i-]+p;
S[i]=S[i-]+p*x[i];
}
h=t=;
for(i=;i<=N;i++){
while(h<t&&get(l[h],l[h+])<x[i])h++;
j=l[h];f[i]=f[j]+c[i]+(sum[i]-sum[j])*x[i]-(S[i]-S[j]);
while(h<t&&get(l[t],l[t-])>get(l[t],i))t--;
l[++t]=i;
}
printf("%lld",f[N]);
return ;
}
BZOJ1096_仓库建设_KEY的更多相关文章
- bzoj-1096 1096: [ZJOI2007]仓库建设(斜率优化dp)
题目链接: 1096: [ZJOI2007]仓库建设 Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L ...
- BZOJ 1096: [ZJOI2007]仓库建设 [斜率优化DP]
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4201 Solved: 1851[Submit][Stat ...
- Bzoj1096 [ZJOI2007]仓库建设
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4193 Solved: 1845 Description L公司有N个工厂,由高到底分布在一座山上. ...
- BZOJ 1096 【ZJOI2007】 仓库建设
Description L公司有N个工厂,由高到底分布在一座山上.如图所示,工厂1在山顶,工厂N在山脚.由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用.突然有一天, ...
- 【BZOJ-1096】仓库建设 斜率优化DP
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3719 Solved: 1633[Submit][Stat ...
- BZOJ_1096_[ZJOI2007]_仓库建设_(斜率优化动态规划+单调队列+特殊的前缀和技巧)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1096 有\(n\)个工厂,给出第\(i\)个工厂的到1号工厂的距离\(x[i]\),货物数量\ ...
- 【BZOJ 1096】 [ZJOI2007]仓库建设 (斜率优化)
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3940 Solved: 1736 Description ...
- bzoj 1096: [ZJOI2007]仓库建设 斜率優化
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2242 Solved: 925[Submit][Statu ...
- bzoj 1096 [ZJOI2007]仓库建设(关于斜率优化问题的总结)
1096: [ZJOI2007]仓库建设 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3234 Solved: 1388[Submit][Stat ...
随机推荐
- css属性之flex属性
flex属性 规定了弹性元素如何伸长或缩短以适应flex容器中的可用空间.是一个简写属性,可以同时设置flex-grow, flex-shrink, flex-basis三个子属性. /* Basic ...
- calayer 的特殊属性整理
calayer: An object that manages image-based content and allows you to perform animations on that con ...
- 解决error possibly undefined macro AC_MSG_ERROR
问题 出现如下缺少宏的问题 error: possibly undefined macro: AC_MSG_ERROR error: possibly undefined macro: AC_SUBS ...
- ext4文件系统特性浅析
ext4作为Linux下的文件系统因其简单性.易管理性.兼容性强等特定,深受大多数用户喜欢,并且作为大多数Linux发行版中的默认文件系统.但是随着现在文件数目的增多以及文件数据的增大,ext4文件系 ...
- 二叉查找树(二叉排序树)(C语言)
#include<stdio.h> #include "fatal.h" struct TreeNode; typedef struct TreeNode *Posit ...
- springmvc找不到对应的requestmapping
1.检查注解的是否正确. 2.检查配置文件中是否是否正确配置了扫描类. 3.如果上述都正确但还是无法找到对应的mapping,打开tomcat所在的文件夹下的webapp中该项目WEB-INF目录,找 ...
- iOS:时间相关(18-10-13更)
先整理出时间相关的程序,以后有空再写成单例. 1.日历(NSCalendar) 2.时间格式() 3.时间戳 附录: 1.定时器 1.日历(NSCalendar) 1.想要获取 世纪.年.月.日.时. ...
- iOS背景音乐不自动播放
iOS 内置浏览器safari不允许自动播放音乐.我们需要通过WeixinJSBridgeReady()函数实现自动触发 document.addEventListener("WeixinJ ...
- Java中的代码块:局部代码块、构造代码块和静态代码块
代码块 java代码中用{ }括起来的代码段叫做代码块 1.局部代码块 在局部位置,用于限定变量的生命周期 例如,下面代码中的a仅在代码块中起作用,因此会编译报错 class Demo{ public ...
- Vue基础学习(纯属个人学习的笔记,慢慢新增)
1.在html文件中,声明了template对象,那么在 data对象中的v-html和v-text的绑定数据是不起作用的 2.v-的几个常用绑定 v-html和v-text:引用的conten ...