P2209 [USACO13OPEN]燃油经济性Fuel Economy
sol:(思想):开一个大根堆和一个小根堆,每次计算到下了一个加油站用掉的油时尽量用小根堆中的元素,且同时删去大根堆中的相应位置的元素,当前加油站如果足够便宜,就可以把大根堆中的元素替换掉;
(实现):显然不可以开两个堆,因为删除是瓶颈,就可以用一下双端队列,右小左大,用油是从右边弹出,更新时从左边开始弹出
#include <queue>
#include <cstdio>
#include <algorithm>
using namespace std;
const long long N=;
long long n,G,B,D;
struct node{long long x,y;}a[N];
inline bool cmp(node a,node b){return a.x!=b.x?a.x<b.x:a.y<b.y;}
struct oll{long long num,w;};
deque<oll>q;
signed main()
{
long long i,ny,np,re=0LL; oll tmp;
scanf("%lld%lld%lld%lld",&n,&G,&B,&D);
for(i=;i<=n;i++)
{
scanf("%lld%lld",&a[i].x,&a[i].y);
}sort(a+,a+n+,cmp);
if(a[].x>B||D-a[n].x>G)return *printf("-1\n");
for(i=;i<=n;i++)if(a[i].x-a[i-].x>G)return *printf("-1\n");
if(B>=D)return *printf("0\n"); if(a[n].x==D)a[n].y=; else a[++n].x=D;
a[n].y=; ny=B; q.push_back((oll){B,});
for(i=;i<=n;i++)
{
long long dd=a[i].x-a[i-].x;
while(!q.empty()&&dd>)
{
tmp=q.front(); q.pop_front();
if(tmp.num>dd)
{
ny-=dd; q.push_front((oll){tmp.num-dd,tmp.w}); break;
}dd-=tmp.num; ny-=tmp.num;
}
if(i==n)
{
while(!q.empty())
{
re=re-1LL*q.front().num*q.front().w; q.pop_front();
}break;
}
while(!q.empty()&&q.back().w>a[i].y)
{
re-=q.back().num*q.back().w; ny-=q.back().num; q.pop_back();
}q.push_back((oll){G-ny,a[i].y}); re=(long long)re+1LL*(G-ny)*a[i].y; ny=G;
}printf("%lld\n",re);
}
P2209 [USACO13OPEN]燃油经济性Fuel Economy的更多相关文章
- 洛谷 P2209 [USACO13OPEN]燃油经济性Fuel Economy
P2209 [USACO13OPEN]燃油经济性Fuel Economy 题目描述 Farmer John has decided to take a cross-country vacation. ...
- [luogu2209][USACO13]燃油经济性Fuel Economy_贪心
燃油经济性Fuel Economy 题目大意:FJ想要去旅行.他的车总容量为G,每行驶一个单位就消耗一个单位的油.FJ要行驶D个单位的距离.期间存在n个加油站,每个加油站有一个价格,表示在这个燃油站买 ...
- 省钱加油(Fuel Economy)题解
题目 农夫约翰决定去做一个环游国家旅行,为了不让他的奶牛们感到孤单,于是他决定租一辆货车带领他的奶牛们一起去旅行.这辆货车的油箱最多可以承载G 个单位的油,同时为了简化问题,规定每一个单位的油可以行使 ...
- 16.The Effect of Advertisement 广告的影响
16.The Effect of Advertisement 广告的影响 (1) The appeal of advertising to buying motives can have both n ...
- R语言-散点图进阶
1.分组散点图 ①xyplot()函数 > library(lattice) > xyplot(mpg~disp, #定义Y~X轴 + data=mtcars, + groups=cyl, ...
- 相关系数(CORRELATION COEFFICIENTS)会骗人?
CORRELATION COEFFICIENTS We've discussed how to summarize a single variable. The next question is ho ...
- 每日英语:Six Ways to Modernize Your Car
AS AUTO MAKERS ADD far-out features to the latest cars at warp speed--everything from futuristic hea ...
- SAP成都研究院飞机哥:程序猿和飞机的不解之缘
今天的文章来自Jerry的老同事张航. 张航和Jerry一样于2007年毕业后加入SAP成都研究院工作至今.进入SAP后的第一个开发部门是SAP Business by Design Infrastr ...
- Mentor.Graphics.FloTHERM.XT.2.3+Mentor.Graphics.Flowmaster.7.9.4
Mentor.Graphics.FloTHERM.XT.2.3 Mentor.Graphics.Flowmaster.7.9.4 AVL.CRUISE.V2015.0-车辆动力学仿真分析平台 AVL. ...
随机推荐
- java 桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 1)适配器:改变已有的两个接口,让他们相容. 2)桥接模式:分离抽象化 ...
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成.不过,略有遗憾的是,据说在淘宝内部,dub ...
- android 解决ScrollView中的子布局不能够填充整个ScrollView的情况。
在开发中如果你的xml文件的跟布局是ScrollView,在ScrollView中无论你写什么样的布局,其默认情况下都是不能填充整个布局的.也就是说你的ScrollView中的子布局设置fill_pa ...
- 快速排序的php实现
再来一个非常高级的排序算法,快速排序...这个算法是很高效的. 快速排序的思路是,找到一个分割点(中枢点 默认是列表第一个值),把原列表分隔成两部分,在分割点左侧的是都比它小的,在它右侧的是都比它大的 ...
- Codeforces round 1098
Div1 530 感受到被Div1支配的恐惧了.jpg 真·一个题都不会.jpg(虽然T1是我智障 感受到被构造题支配的恐惧了.jpg A 直接树上贪心就行,是我写错了.jpg B 这个构造超级神仙有 ...
- Lean Data Innovation Sharing Salon(2018.09.15)
时间:2018.09.15地点:北京国华投资大厦
- 01-时间复杂度、对数器(python)、冒泡、选择、递归实质、归并、小和问题、逆序对、mid
1.时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作. 时间复杂度为一个算法流程中,常数操作数量的指标.常用O(读作big O)来表示. 具体来说, ...
- Logview_pro破解版
logViewer Pro 是一款log文件查看器,它可以在短短数秒内打开上G的LOG文件,支持高亮某行文字(例如警告,错误),支持Unicode名字,支持查看的编码:ANSI, OEM, Unico ...
- html绝对路径,相对路径
.com/eat.php中引用.com/includes/headrt.php的话写includes/header.php .com/service/eat.php中引用.com/includes/h ...
- python报错问题解决:'ascii' codec can't encode character
之前部署了openstack虚拟化环境,有一天在使用nova list查看虚拟机的时候,突然报错!如下: [root@linux-node1 src]# nova listERROR (Unicode ...