编程题-汽车加油-优先队列
来源:互联网 发布:2017年二级c语言题库 编辑:程序博客网 时间:2024/06/03 18:35
/* * test.cpp * * Created on: Feb 3, 2015 * Author: lizo *//*你需要驾驶一辆卡车行驶L单位距离。最开始时,卡车上有P单位的汽油。卡车没开1单位距离需要消耗1单位的汽油。如果在途中车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点。在图中一共有N个加油站。第i个加油站在距离起点Ai单位距离的地方,最多可以给卡车加Bi单位汽油。假设卡车的燃料箱的容量是无限大的。请问卡车能否到达终点?如果可以最小需要加多少次油,否则输出-1;思路:我们先假设卡车在有油的情况下一直跑,知道油耗尽的时候,再考虑在经过的加油站中,能加油最大的加油站加油,所以需要一个优先队列,没经过一个加油站则放进队列中*/#include <iostream>#include <queue>using namespace std;int main(void){int L,P,N;cin>>L>>P>>N;int *A=new int[N+1];int *B=new int[N+1];A[N]=L;B[N]=0;for(int i=0;i<N;i++){cin>>A[i];}for(int i=0;i<N;i++){cin>>B[i];}//记录油箱里面到油到单位int tank = P;//答案int ans = 0;//记录当前位置int pos = 0;priority_queue<int> que;for(int i = 0 ; i < N+1 ; i++){//距离下个加油站到距离int dis = A[i] - pos;while( tank < dis){if(que.empty()){cout<<"-1"<<endl;return 0;}tank += que.top();que.pop();ans++;}tank -= dis;pos = A[i];que.push(B[i]);}cout<<ans<<endl;}
0 0
- 编程题-汽车加油-优先队列
- POJ 2431 Expedition (汽车加油问题,STL_优先队列+贪心) (挑战程序P76)
- 汽车加油
- 优先队列之加油站最小加油次数
- POJ2431---Expedition(加油问题,优先队列)
- 算法实现题 汽车加油问题.
- 汽车加油(C++)
- 汽车行驶加油问题
- 汽车加油问题
- 汽车加油行驶问题
- 【最短路】汽车加油
- 汽车加油问题(智力题)
- 汽车加油问题
- 汽车加油问题
- 【智力题】汽车加油问题
- 汽车加油问题
- 汽车加油问题
- 汽车加油行驶问题
- ViewAnimator使用
- PHP获取搜索引擎关键词
- OpenWRT 增加内核模块及应用方法
- JQuery Ajax操作常用的API:serializeArray、serialize、param的区别和使用
- [总结] 网络流经典建模
- 编程题-汽车加油-优先队列
- 记性不如烂笔头21-JAVA数据库连接池 DBCP
- java开发小细节分享
- Quartz2D 图像处理详解(一)
- AC自动机模板(hdu2222)
- Missing styles. Is the correct theme chosen for this layout?
- sql 备忘
- J2EE项目架构最佳实践
- 运算符结合性