POJ 2431 (优先队列)
题目链接: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 (优先队列)的更多相关文章
- POJ 2431 优先队列
汽车每过一单位消耗一单位油,其中有给定加油站可加油,问到达终点加油的最小次数. 做法很多的题,其中优先对列解这题是很经典的想法,枚举每个加油站,判断下当前油量是否小于0,小于0就在前面挑最大几个直至油 ...
- POJ 2431 Expedition (贪心+优先队列)
题目地址:POJ 2431 将路过的加油站的加油量放到一个优先队列里,每次当油量不够时,就一直加队列里油量最大的直到能够到达下一站为止. 代码例如以下: #include <iostream&g ...
- poj 2431 【优先队列】
poj 2431 Description A group of cows grabbed a truck and ventured on an expedition deep into the jun ...
- POJ 2431 Expedition(探险)
POJ 2431 Expedition(探险) Time Limit: 1000MS Memory Limit: 65536K [Description] [题目描述] A group of co ...
- poj - 2431 Expedition (优先队列)
http://poj.org/problem?id=2431 你需要驾驶一辆卡车做一次长途旅行,但是卡车每走一单位就会消耗掉一单位的油,如果没有油就走不了,为了修复卡车,卡车需要被开到距离最近的城镇, ...
- POJ 2431 Expedition (贪心 + 优先队列)
题目链接:http://poj.org/problem?id=2431 题意:一辆卡车要行驶L单位距离,卡车上有P单位的汽油.一共有N个加油站,分别给出加油站距终点距离,及加油站可以加的油量.问卡车能 ...
- POJ 2431——Expedition(贪心,优先队列)
链接:http://poj.org/problem?id=2431 题解 #include<iostream> #include<algorithm> #include< ...
- 优先队列(挑程)poj 2431
每次写poj的题都很崩溃,貌似从来没有一次一发就ac的,每次都有特别多的细节需要考虑.还有就是自己写的太粗糙了,应该把每种情况都想到的,总是急着交,然后刷一页wa. 优先队列直接用stl就可以,简单实 ...
- poj 2431 Expedition 贪心 优先队列 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=2431 题解 朴素想法就是dfs 经过该点的时候决定是否加油 中间加了一点剪枝 如果加油次数已经比已知最少的加油次数要大或者等于了 那么就剪 ...
- poj 2431 Expedition 贪心+优先队列 很好很好的一道题!!!
Expedition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10025 Accepted: 2918 Descr ...
随机推荐
- Sr Software Engineer - Big Data Team
Sr Software Engineer - Big Data Team About UberWe’re changing the way people think about transport ...
- 8.4Solr API使用(Result Grouping分组查询)
转载请出自出处:http://eksliang.iteye.com/blog/2169458 一.概述 分组统计查询不同于分组统计(Facet),facet只是简单统计记录数,并不能为每组数据返回实际 ...
- C语言:值传递,地址传递和引用传递(example:值交换)
于C语言中值传递.地址传递和引用传递的我个人理解. 通过一个例子:swap(交换两个整型变量的值)来表现! #include <stdio.h> void swap1(int* a,int ...
- BZOJ3534:[SDOI2014]重建(矩阵树定理)
Description T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回. 幸运 ...
- Common lang一些边界方法总结(好记性不如烂笔头,需要慢慢积累).一定要利用好现有的轮子,例如Apache common与Google Guava
好记性真是不如烂笔头啊!!!! 如下代码: List<String> list = new ArrayList<String>(); list.add("1" ...
- Scala学习之路 (八)Scala的隐式转换和隐式参数
一.概念 Scala 2.10引入了一种叫做隐式类的新特性.隐式类指的是用implicit关键字修饰的类.在对应的作用域内,带有这个关键字的类的主构造函数可用于隐式转换. 隐式转换和隐式参数是Scal ...
- metamask-iframe-stream,没成功
https://github.com/kumavis/iframe-stream/blob/master/test/rebundle.js iframe-stream-其实就是将iframe打包成流 ...
- 测试计划&性能测试分析报告模板(仅供参考)
一.测试计划 1. 引言 1.1 编写目的 2. 参考文档 3. 测试目的 4. 测试范围 4.1 测试对象 4.2 需要测试的特性 4.3 无需测试的特性 5. 测试启动与结束准则 5.1 ...
- ZOJ3623:Battle Ships(全然背包)
Battle Ships is a new game which is similar to Star Craft. In this game, the enemy builds a defense ...
- 20155302《网络对抗》Exp7 网络欺诈防范
20155302<网络对抗>Exp7 网络欺诈防范 实验内容 (1)简单应用SET工具建立冒名网站 (1分) (2)ettercap DNS spoof (1分) (3)结合应用两种技术, ...