51nod1288汽油补给
考虑当前这个汽油站加的情况。
如果在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汽油补给的更多相关文章
- [多校联考2019(Round 4 T2)][51nod 1288]汽油补给(ST表+单调栈)
[51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的 ...
- 【51nod 1288】汽油补给
Description 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市 ...
- 51nod K 汽油补给 大根堆+小根堆....
题目传送门 用优先队列瞎搞... 想着在每个地方 先算上一个点到这一个点要花费多少钱 这个用小根堆算就好 然后在这个地方加油 把油钱比自己多的替代掉 这个用大根堆维护一下 然后两个堆之间信息要保持互通 ...
- ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比—Jason niu
%ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比—Jason niu load spectra_data.mat temp = randperm(size(NIR,1)); P_tra ...
- 你相信吗:一加仑汽油可以给iPhone充电20年
一直以来,苹果公司的iPhone系列手机受到了全世界人民的喜欢,很多人就此成为了果粉.或许是由于我们过于在意iPhone系列手机出彩的外形,所以忽略了很多关于iPhone手机有意思的消息,我们今天就来 ...
- RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比—Jason niu
load spectra_data.mat temp = randperm(size(NIR,1)); P_train = NIR(temp(1:50),:)'; T_train = octane(t ...
- NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比—Jason niu
load spectra_data.mat plot(NIR') title('Near infrared spectrum curve—Jason niu') temp = randperm(siz ...
- words
conscious[英][ˈkɒnʃəs][美][ˈkɑnʃəs]consensus[英][kənˈsensəs][美][kənˈsɛnsəs] scious sensuswaterflood; de ...
- [短期持续更新]Codeforces 构造题一览
说实话我觉得做这种题很没意思(不够硬核), 可是人有短板终究是要补的...起码这种类型补起来相对简单 所以还是把先前准备好的专题放下吧,做点实现上比较休闲的题 ps.为了精简篇幅,代码全部丢到ubun ...
随机推荐
- pip install MySQL-python
在win7下安装了python后,想安装python-mysql,使用pip安装出现如下问题: pip install MySQL-pythonbuild\lib.win-amd64-2.7\_mys ...
- JavaScript replaceAll
网上的: String.prototype.replaceAll = function(str1, str2) { var str = this; var result = str.replace(e ...
- UDP的socketasynceventargs
C# 使用 SocketAsyncEventArgs 实现UdpSocket系列 http://www.cnblogs.com/zwq194/archive/2012/10/30/2746393.ht ...
- JDK tools之jps和jstack诊断Java程序
大部分Java开发者可能知道有这么个工具,但是没怎么用过,每次还得百度一下.我也是之一 -_-!!. 每次遇到
- 获取公网IP地址
https://ipip.yy.com/get_ip_info.php http://pv.sohu.com/cityjson?ie=utf-8 http://www.ip168.com/json.d ...
- python 打包成tar包
def make_targz(output_filename, source_dir): with tarfile.open(output_filename, "w:gz") as ...
- java 使用正则判断是不是一个数字
public class Numeric { public static void main(String[] args) { String string = "-1234.15" ...
- STL_算法_04_算术和生成算法
◆ 常用的算术和生成算法: 1.1.求和( accumulate 是求和的意思)(对指定范围内的元素求和,然后结果再加上一个由val指定的初始值.) T accumulate(iteratorBegi ...
- jQuery.extend()意义及用途
一.意义 用于将一个或多个对象的内容合并到目标对象 二.用法: $.extend( [deep ], target, object1 [, objectN ] ) 注意: 1. 如果只为$.exten ...
- Spring AMQP 源码分析 04 - MessageListener
### 准备 ## 目标 了解 Spring AMQP 如何实现异步消息投递(推模式) ## 前置知识 <RabbitMQ入门_05_多线程消费同一队列> ## 相关资源 Quick To ...