题目链接:https://vjudge.net/problem/POJ-2431

思路:

  “ 在卡车行驶途中, 只有经过加油站才能加油。” 我们不妨转变思路, 理解成“当卡车驶过加油站时就获得了加油的权利”,在之后需要加油时, 就认为是在之前经过加油站时加的油即可。

  那么我们何时加油呢, 最好的办法当然是选择能加最多油的加油站了(选择一次加大量的油, 可以减少加油次数),这时就要用到优先队列了。

  下面是代码:

 #include <cstdio>
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std; struct gas
{
int dis;
int fule;
}a[]; bool cmp(gas A, gas B)
{
return A.dis<B.dis;
} priority_queue<int> que; int main()
{
int n,L,P;
cin>>n;
for(int i=; i<n; i++)
{
cin>>a[i].dis>>a[i].fule;
}
cin>>L>>P;
for(int i=; i<n; i++)
{
a[i].dis = L-a[i].dis;
}
sort(a, a+n, cmp);
a[n].dis=L;
a[n].fule=;
n++;//关键
int position=, count=, tank=P;//所在位置, 加油次数, 剩余油量
for(int i=; i<n; i++)
{
int d=a[i].dis - position;
while(tank-d<)
{
if(que.empty())
{
puts("-1");
return ;
}
tank += que.top();//加油
que.pop();
count++;
}
tank -= d;
position = a[i].dis;
que.push(a[i].fule);//关键
}
cout<<count<<endl; return ;
}

注释中的两个关键点要注意, 自己慢慢体会吧。

觉得有帮助不妨点个推荐呀!

 题外话:

  最近比赛被吊打, 所以准备重新系统性学习。 看到这题是七个月前AC的, 不禁百感交集, 感觉这半年来并没有怎么提升啊。 果然还是不够“刻意练习”!!!

POJ 2431 (优先队列)的更多相关文章

  1. POJ 2431 优先队列

    汽车每过一单位消耗一单位油,其中有给定加油站可加油,问到达终点加油的最小次数. 做法很多的题,其中优先对列解这题是很经典的想法,枚举每个加油站,判断下当前油量是否小于0,小于0就在前面挑最大几个直至油 ...

  2. POJ 2431 Expedition (贪心+优先队列)

    题目地址:POJ 2431 将路过的加油站的加油量放到一个优先队列里,每次当油量不够时,就一直加队列里油量最大的直到能够到达下一站为止. 代码例如以下: #include <iostream&g ...

  3. poj 2431 【优先队列】

    poj 2431 Description A group of cows grabbed a truck and ventured on an expedition deep into the jun ...

  4. POJ 2431 Expedition(探险)

    POJ 2431 Expedition(探险) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A group of co ...

  5. poj - 2431 Expedition (优先队列)

    http://poj.org/problem?id=2431 你需要驾驶一辆卡车做一次长途旅行,但是卡车每走一单位就会消耗掉一单位的油,如果没有油就走不了,为了修复卡车,卡车需要被开到距离最近的城镇, ...

  6. POJ 2431 Expedition (贪心 + 优先队列)

    题目链接:http://poj.org/problem?id=2431 题意:一辆卡车要行驶L单位距离,卡车上有P单位的汽油.一共有N个加油站,分别给出加油站距终点距离,及加油站可以加的油量.问卡车能 ...

  7. POJ 2431——Expedition(贪心,优先队列)

    链接:http://poj.org/problem?id=2431 题解 #include<iostream> #include<algorithm> #include< ...

  8. 优先队列(挑程)poj 2431

    每次写poj的题都很崩溃,貌似从来没有一次一发就ac的,每次都有特别多的细节需要考虑.还有就是自己写的太粗糙了,应该把每种情况都想到的,总是急着交,然后刷一页wa. 优先队列直接用stl就可以,简单实 ...

  9. poj 2431 Expedition 贪心 优先队列 题解《挑战程序设计竞赛》

    地址 http://poj.org/problem?id=2431 题解 朴素想法就是dfs 经过该点的时候决定是否加油 中间加了一点剪枝 如果加油次数已经比已知最少的加油次数要大或者等于了 那么就剪 ...

  10. poj 2431 Expedition 贪心+优先队列 很好很好的一道题!!!

    Expedition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10025   Accepted: 2918 Descr ...

随机推荐

  1. gnome美化

    调整工具更新可以移动窗口控件gnome-tweak-tool # dnf install gnome-tweak-tool 命令行启动,并且要在普通用户下启动 $ gnome-tweak-tool 在 ...

  2. linux禁止非法用户试探登录

    当我们的linux主机一旦暴露在互联网上,就会遭受到来自网络上的一些非法用户的骚扰.如弱口令扫描,试探性登录:这些行为对linux主机构成一定的威胁.那怎样防范此类的攻击了,这里写了一个脚本,功能就是 ...

  3. Ecstore Nginx Rewrite(去掉链接中的index.php) ECSTORE 伪静态

    一.修改 nginx.conf文件,添加如下代码: if ($request_uri ~ (.+?\.php)(|/.+)$ ){ break; } if (!-e $request_filename ...

  4. 前端aes解密实战小结

    很多人对于AES加密并不是很了解,导致互相之间进行加密解密困难. 本文用简单的方式来介绍AES在使用上需要的知识,而不涉及内部算法.最后给出例子来帮助理解AES加密解密的使用方法. AES的麻烦 相比 ...

  5. Netty入门(二)时间服务器及客户端

    在这个例子中,我在服务器和客户端连接被创立时发送一个消息,然后在客户端解析收到的消息并输出.并且,在这个项目中我使用 POJO 代替 ByteBuf 来作为传输对象. 一.服务器实现 1.  首先我们 ...

  6. 当我们跑SparkSQL时候为了更好地了解SparkSQL运行,可以WEBUI看SQL的Tab

  7. windows下一根数据线玩转树莓派zero(w)

    买了个树莓派zero w,想着用一根普通micro数据线达成 供电+ssh+通过usb共享网络+远程桌面 的目标 通过用静态ip免去了用benjour的连接不稳定方法,下面开始细说 需要的硬件: 树莓 ...

  8. PAT B1029 旧键盘 (20 分)

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...

  9. day53

    JS常用类 一.Number 1.常用数字 整数:10 小数:3.14 科学计数法:1e5 | 1e-5 正负无穷:Infinity | -Infinity 2.常用进制 二进制:0b1010 八进制 ...

  10. SJA1000 CAN驱动程序演示实验

    SJA1000 CAN驱动程序演示实验 2016-04-12 20:41:22来源: eefocus 关键字:SJA1000  CAN  驱动程序  演示实验   收藏 评论(0) 分享到 微博 QQ ...