51nod1288汽油补给

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

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

否则加满。

但是寻找超时

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

这样就可以了。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200005;
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=1;i<=n;i++)scanf("%d%d",&dis[i],&pri[i-1]);
    vector<no>qu;
    int flag=1;
    ll res=0;
    for (int i=1;i<=n;i++)
     if (dis[i]>t)
      {
          puts("-1");
          return 0;
      }
    for (int i=0;i<=n;i++)
     {
        if (!i)
         {
            no n1={pri[0],t};
            qu.push_back(n1);
         }
        else
         {
            sort(qu.begin(),qu.end(),cmp);
            ll di=0,rmin=0;
            while (1)
             {
                if (di+qu[0].num>=dis[i])
                 {
                    rmin=rmin+(dis[i]-di)*(qu[0].price);
                    if (di+qu[0].num>=dis[i])
                     qu[0].num=qu[0].num-(dis[i]-di);
                    if (!qu[0].num)qu.erase(qu.begin());
                    break;
                 }
                else
                 {
                    di+=qu[0].num;
                    rmin+=qu[0].num*qu[0].price;
                    qu.erase(qu.begin());
                 }
             }
            res+=rmin;
            ll sum=0;
            for (int k=0;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);
}  
时间: 2024-10-09 21:25:36

51nod1288汽油补给的相关文章

[51nod 1288]汽油补给(ST表+单调栈)

[51nod 1288]汽油补给(ST表+单调栈) 题面 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市到下一个城市的距离D,以及当地的油价P,求走完整个旅途最少的花费.如果无法从起点到达终点输出-1. 分析 贪心考虑,当我们到达一个城市x的时候,我们下一个到的城市应该是在x加满油的情况下,能到达的油价比x低的城市.如果每个加油城市之间的路都这样走,那么最后的价钱一定是最小的.

【51nod 1288】汽油补给

Description 有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2...... -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T.给出每个城市到下一个城市的距离D,以及当地的油价P,求走完整个旅途最少的花费.如果无法从起点到达终点输出-1. 例如D = {10, 9, 8}, P = {2, 1, 3},T = 15,最小花费为41,在0加上10个单位的汽油,在1加满15个单位的汽油,在2加2个单位的汽油,走到终点时恰好用完所有汽油,花费为10 *

内部考试总结

2019年8月5日星期一 Kos 题目描述 有\(n\)个人,他们之间将会有\(m\)场比赛(两个人之间可能有多场比赛,但这些比赛的结果不一定完全相同),问获胜场次最多的人获胜的场次数最少 限制范围 \(Time:1000ms\quad Space:512MB\) \(1\le n\le 10^4,0\le m\le 10^4\) 正解算法 建立二分答案,对猜测解\(x\),考虑建立最大流模型 对每场比赛和每个人都建立一个点,从源点向每场比赛连一条容量为\(1\)的边,每个选手向汇点连一条容量为

南京江淮汽油版短轴距冷藏运输车138-86866046

从小事做起,做好细节,把握质量.产品质量由“检验”到“预防”,由“堵”到“疏”,再到生产的“全面质量管理”,我们追求生产过程中的超精细化要求与超高质量水平要求. 江淮好微汽油版冷藏车,江淮正宗国四原装底盘,这款底盘以它清新的外表,打动了无数客户的心,外边清秀,不失美感,是药品,疫苗,鲜果,海鲜,冷冻食品,冰激凌,超市配送,市区转运最好的选择,柳州五菱国四汽油版发动机82马力,环保动力,可以在上海,深圳,广州,南京,成都……一线城市上牌照,5档变速箱,600-13轮胎,冷藏保温厢体全部聚氨酯挤塑板

外挂技术-回城补给设计与补给条件测试

学习目标 回城补给设计 相关数据准备 作业: 寻路到FindToWay(x,y); 相关数据准备 //检测是否需要补给 IsRequireSupply(); // //回城补给相关 BOOL IsRequireSupply(); //检测是否需要回城补给 BOOL IsLowHpSupply;//低于ndHpGoodsMinNum时 是否回城补给 DWORD ndHpGoodsMinNum;//低于此值时回城补给HP物品 10 DWORD ndHpGoodsMaxNum;//回城补给时补满到这个

汽油标号

汽油标号:是实际汽油抗爆性与标准汽油的抗爆性的比值.标号越高,抗爆性能就越强.标准汽油是由异辛烷和正庚烷组成.并不是标号越高越好,要根据发动机压缩比合理选择汽油标号. 种类介绍 标准汽油是由异辛烷和正庚烷组成.异辛烷的抗爆性好,其辛烷值定为100:正庚烷的抗爆性差,在汽油机上容易发生爆震,其辛烷值定为0.如果汽油的标号为90,则表示该标号的汽油与含异辛烷90%.正庚烷10%的标准汽油具有相同的抗爆性. 例如90号汽油,可以保证在压缩比不大于9的发动机上使用不产生爆燃现象,97号汽油就可以保证在压

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

%ELM:ELM基于近红外光谱的汽油测试集辛烷值含量预测结果对比-Jason niu load spectra_data.mat temp = randperm(size(NIR,1)); P_train = NIR(temp(1:50),:)'; T_train = octane(temp(1:50),:)'; P_test = NIR(temp(51:end),:)'; T_test = octane(temp(51:end),:)'; N = size(P_test,2); [Pn_tra

上海燃料补给站

上海燃料补给站[薇|信+:K777KA]进口医用精品█视频验货█担保交易上海燃料补给站█薇+信:K777KA█各地招DL█,血症亦用,止赤 白痢,通大小便,误吞发绕喉,取自己发灰周送下,破伤风入脑,加何首末酒沃灌苏. 又和诸药熬膏,可贴痈疽消肿.篦下头垢,名百齿霜,为丸治淋闭不通,及伤寒劳复, 调膏疗口咽酸水,并百魅鬼邪.竹木刺在肉中,津和涂即出,飞丝入眼内,点两 立 效,卒中酒毒蕈毒,酒化服渐安,乳痈初起,酒服亦效.剪髭须烧灰,敷痈疮亦愈. 男阴毛,若合口咽汁,蛇咬毒不入腹伤人. 主治痘疹合参

北京燃料补给站

北京燃料补给站[薇|信+:K777KA]进口医用精品█视频验货█担保交易北京燃料补给站█薇+信:K777KA█各地招DL█以类相从.补还其本,故主 之也.能解蛊毒者,味甘而咸也,治痘疮倒靥乳痈未溃者,以毒攻毒也. 人牙自落者佳,法制研末,热酒调服,能托豌豆陷疮,且除劳治疟,兼解蛊毒,更 托乳痈.人齿 和黑虱共研,出箭头破痈肿可涂.人津沫,取平明之时,润眼目,去 翳障生光,涂肿痈,解热毒即退,回津频咽,敛纳丹田,肺间心清,能降火,任清吐唾,损真元. 按∶津乃精气所化,五更未语之唾,涂肿辄消,拭目去