POJ 2431Expedition(优先队列解题)
来源:互联网 发布:淘宝模板免费 编辑:程序博客网 时间:2024/05/01 08:59
题目链接:http://poj.org/problem?id=2431
【中文题意】让你驾驶一辆汽车从0行驶l千米到达一个小镇。途中有n个加油站,每个加油站可以加一定量的汽油。
首先给你一个整数n,代表加油站的数目。
下面n行,每行两个整数,第一个整数代表这个加油站距离终点的距离,第二个整数代表这个加油站可以给汽车加油的加油量。
【思路分析】首先我们这样想,我们怎么知道到达某个站应不应该加油呢,所以呢,我们可以预加油,就是把每个加油站可以加的油放到一个优先队列里面,然后假如到某一个加油站油不够用的时候从优先队列一直取到够用为止,另外把距离翻过来处理比较好。
【AC代码】
#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<stack>#include<map>#include<algorithm>using namespace std;#define N 10005struct node{ int a,b;}point[N];bool cmp(node p1,node p2){ return p1.a<p2.a;}int n,l,p;void solve(){ point[n].a=l; point[n].b=0; for(int i=0;i<n;i++) { point[i].a=l-point[i].a; } sort(point,point+n,cmp); priority_queue<int>que; //ans:加油次数 pos:现在所在的位置 tank:油箱中汽油的数量 int ans=0,pos=0,tank=p; for(int i=0;i<=n;i++) { int d=point[i].a-pos; while(tank-d<0) { if(que.empty()) { puts("-1"); return ; } else { tank+=que.top(); que.pop(); ans++; } } tank-=d; pos=point[i].a; que.push(point[i].b); } printf("%d\n",ans);}int main(){ while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { scanf("%d %d",&point[i].a,&point[i].b); } scanf("%d%d",&l,&p); solve(); } return 0;}
0 0
- POJ 2431Expedition(优先队列解题)
- POJ 2431 Expedition (优先队列+贪心)
- POJ 2431 Expedition (贪心 + 优先队列)
- poj 2431 Expedition(优先队列)
- poj 2431 Expedition (贪心+优先队列)
- POJ 2431 Expedition (贪心、优先队列)
- POJ 2431 Expedition(优先队列)
- POJ - 2431 Expedition(优先队列)
- poj 2431Expedition(优先队列+贪心)
- POJ 2431 Expedition (贪心、优先队列)
- poj-2431Expedition(加油站 优先队列)
- POJ 2431 Expedition (贪心+优先队列)
- POJ 2431 Expedition(贪心+优先队列)
- POJ 2431 Expedition (贪心 + 优先队列)
- POJ 2431 Expedition (优先队列 + 贪心)
- POJ 2431 Expedition(贪心+优先队列)
- poj 2431 Expedition(优先队列+贪心)
- poj 2431 Expedition(优先队列)
- 表头固定内容滚动【css笔记】
- 【C语言】LeetCode 152. Maximum Product Subarray
- 逆向工程核心原理读书笔记-API钩取之IE浏览器连接控制
- oracle存储过程调用游标例子
- Linux驱动--并发和竞争
- POJ 2431Expedition(优先队列解题)
- Android中实现滑动的七种方法
- Gradle实战系列(三)__多模块项目
- 报错:The specified child already has a parent. You must call removeView
- springIoc之注解方式
- Darwin Streaming Server程序结构分析
- PAT B1008. 数组元素循环右移问题 (20)
- oracle常用命令
- 加法进位次数