考虑当前这个汽油站加的情况。

如果在t以内的范围有一个加油站比当前加油站便宜,那么就只需要加油加到足够开到最近的比自己便宜的加油站。

否则加满。

但是寻找超时

我们可以先加满,找到一个便宜的加油站之后,把自己多出来的油“倒回去”。

这样就可以了。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=;
struct no
{
ll price,num;
};
bool cmp(no x,no y)
{
return x.price<y.price;
}
ll n,t,dis[N],pri[N];
int main()
{
scanf("%lld%lld",&n,&t);
for (int i=;i<=n;i++)scanf("%d%d",&dis[i],&pri[i-]);
vector<no>qu;
int flag=;
ll res=;
for (int i=;i<=n;i++)
if (dis[i]>t)
{
puts("-1");
return ;
}
for (int i=;i<=n;i++)
{
if (!i)
{
no n1={pri[],t};
qu.push_back(n1);
}
else
{
sort(qu.begin(),qu.end(),cmp);
ll di=,rmin=;
while ()
{
if (di+qu[].num>=dis[i])
{
rmin=rmin+(dis[i]-di)*(qu[].price);
if (di+qu[].num>=dis[i])
qu[].num=qu[].num-(dis[i]-di);
if (!qu[].num)qu.erase(qu.begin());
break;
}
else
{
di+=qu[].num;
rmin+=qu[].num*qu[].price;
qu.erase(qu.begin());
}
}
res+=rmin;
ll sum=;
for (int k=;k<qu.size();k++)
{
if (pri[i]>qu[k].price)sum+=qu[k].num;
else
{
no n1;
n1.num=t-sum;
n1.price=pri[i];
qu.erase(qu.begin()+k,qu.end());
qu.push_back(n1);
sum=t;
break;
}
}
if (sum<t)
{
no n1;
n1.price=pri[i];
n1.num=t-sum;
qu.push_back(n1);
}
}
}
printf("%lld",res);
}

51nod1288汽油补给的更多相关文章

  1. [多校联考2019(Round 4 T2)][51nod 1288]汽油补给(ST表+单调栈)

    [51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的 ...

  2. 【51nod 1288】汽油补给

    Description 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市 ...

  3. 51nod K 汽油补给 大根堆+小根堆....

    题目传送门 用优先队列瞎搞... 想着在每个地方 先算上一个点到这一个点要花费多少钱 这个用小根堆算就好 然后在这个地方加油 把油钱比自己多的替代掉 这个用大根堆维护一下 然后两个堆之间信息要保持互通 ...

  4. ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比—Jason niu

    %ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比—Jason niu load spectra_data.mat temp = randperm(size(NIR,1)); P_tra ...

  5. 你相信吗:一加仑汽油可以给iPhone充电20年

    一直以来,苹果公司的iPhone系列手机受到了全世界人民的喜欢,很多人就此成为了果粉.或许是由于我们过于在意iPhone系列手机出彩的外形,所以忽略了很多关于iPhone手机有意思的消息,我们今天就来 ...

  6. RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比—Jason niu

    load spectra_data.mat temp = randperm(size(NIR,1)); P_train = NIR(temp(1:50),:)'; T_train = octane(t ...

  7. NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比—Jason niu

    load spectra_data.mat plot(NIR') title('Near infrared spectrum curve—Jason niu') temp = randperm(siz ...

  8. words

    conscious[英][ˈkɒnʃəs][美][ˈkɑnʃəs]consensus[英][kənˈsensəs][美][kənˈsɛnsəs] scious sensuswaterflood; de ...

  9. [短期持续更新]Codeforces 构造题一览

    说实话我觉得做这种题很没意思(不够硬核), 可是人有短板终究是要补的...起码这种类型补起来相对简单 所以还是把先前准备好的专题放下吧,做点实现上比较休闲的题 ps.为了精简篇幅,代码全部丢到ubun ...

随机推荐

  1. fatal One or more refs for names blocks change upload

    前言 今天在提代码时,发现push不到gerrit仓库了,十分的奇怪,和同事沟通后发现,同事可以直接git push origin master而且也可以合并,都是没有问题的,但是就是在gerrit上 ...

  2. JQuery使用教程

    jQuery简介 jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team jQuery是对原生JavaScript二次封装的工具函数集合 ...

  3. C#中的编译开关

    c#不支持宏定义,只支持编译开关. ======================================我想加上#define xxx就编译a代码,否则编译b代码,像这样的:#if xxxa ...

  4. 基础dp 记录

    51nod 1134 最长递增子序列 #include<iostream> #include<cstdio> #include<cstring> #include& ...

  5. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流

    19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...

  6. js分号的重要性

    js中语句末尾可以不加分号, 很多时候在做练习或写几个页面时,我都是不会加的.虽然知道加了会好一点.但就是觉得很敲一句就要多按一次分号键(;)来加分号,而不加也不怎么样,然后就不想加了. 也听说在对j ...

  7. 小米笔记本 air 12.5寸 支持硬盘参数

    M.2接口 2280规格 单面芯片固态硬盘 PCIE协议

  8. java入门书籍很少介绍的java知识

    1.java中数组的长度可以用.length来确定 2.java中的Arrays类可以对数组进行轻松的操作 (1).包名:import java.util.Arrays (2).Arrays.sort ...

  9. Python mysql-表的创建,删除和更新

    2017-09-06 20:59:56 数据库的创建 CREATE DATEBASE <数据库的名称> 表的创建 CREATE TABLE <表名> (<列名1> ...

  10. English trip -- Review Unit4 Health 健康

    medicine    n. 药:医学:内科:巫术  vt. 用药物治疗:给…用药 drug  毒药;药店(drugstore) pill  药丸 patient 病人 head 头 hands 手 ...