POJ 2431 Expedition(贪心)
2015-07-10 13:14
197 查看
Description
有n个加油站,每个加油站的加油的油量有限,距离终点都有一个距离。一个卡车的油箱无限,每走一个单元要消耗一单元的油,问卡车到达终点的最少加多少次油
Input
第一行为一个整数N表示加油站数量,之后N行每行两个整数分别表示该加油站距终点距离和可加的油量,最后一行两个整数L和P分别表示起点到终点距离和卡车初始油箱内油量
Output
输出卡车到达终点时最少加油次数,如果不能到达终点则输出-1
Sample Input
4
4 4
5 2
11 5
15 10
25 10
Sample Output
2
Solution
卡车走得越远越好,要是不能到达终点,就选择经过的油站里面,加油量最多的加油,然后继续。所以先按照加油站距离终点的距离,从大到小排列。利用优先队列来存经过的加油站,根据加油站加油的油量多少排序
Code
有n个加油站,每个加油站的加油的油量有限,距离终点都有一个距离。一个卡车的油箱无限,每走一个单元要消耗一单元的油,问卡车到达终点的最少加多少次油
Input
第一行为一个整数N表示加油站数量,之后N行每行两个整数分别表示该加油站距终点距离和可加的油量,最后一行两个整数L和P分别表示起点到终点距离和卡车初始油箱内油量
Output
输出卡车到达终点时最少加油次数,如果不能到达终点则输出-1
Sample Input
4
4 4
5 2
11 5
15 10
25 10
Sample Output
2
Solution
卡车走得越远越好,要是不能到达终点,就选择经过的油站里面,加油量最多的加油,然后继续。所以先按照加油站距离终点的距离,从大到小排列。利用优先队列来存经过的加油站,根据加油站加油的油量多少排序
Code
#include <iostream> #include<queue> #include<algorithm> using namespace std; struct st { int a; int b; }; bool cmp(const st&left,const st&right) { return left.a<right.a; } int main() { int N,L,P,ans,i,l; scanf("%d",&N); st *t=new st ;//申请动态数组 for(i=N-1;i>=0;i--) scanf("%d%d",&t[i].a,&t[i].b); scanf("%d%d",&L,&P); for(i=N-1;i>=0;i--)//将加油站距终点距离变成卡车距起点距离 t[i].a=L-t[i].a; sort(t,t+N,cmp);//将加油站位置排序 priority_queue<int> que;//优先队列存储已经过加油站可加的油量 que.push(P);//将卡车初始油量入队,把起点也认为是加油站 ans=0;//加油次数初始化 l=0; i=0; while(!que.empty()) { l+=que.top();//加油 que.pop(); if(l>=L)//卡车油箱的油已足够行驶到终点则不需加油 break; ans++;//加油次数加一 while(t[i].a<=l&&i<N)//经过加油站 { que.push(t[i].b);//将该加油站油量入队 i++; } } if(l>=L)//剩余油量足够到达终点 printf("%d\n",ans); else//无法到达终点 puts("-1"); delete[] t;//清空动态数组申请内存 return 0; }
相关文章推荐
- 面试技巧之群面
- Ueditor图片上传设置(1.4.3 JSP版本)
- 黑马程序员——String类详解
- [Ovject-c] 文件处理 (一) plist文件
- 【读书笔记】Linux高性能服务器编程(第二篇 第五章)
- HDFS设计理念
- c++primer 要点-函数
- InnoDB Insert(插入)操作(下)--mysql技术内幕
- c#设计模式---建造者模式(Builder Pattern)
- STM32堆栈溢出
- Unity双屏全屏方法
- 基本XYZ立体绘图命令
- ANDROID技术积累:开发规范
- UVALive 3211 Now or later(2-SAT,二分,Kosaraju)
- Android入门(43)——第五章 使用Notification实现状态通知栏的通知
- 调整容器中控件索引
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- 【转】Linux 初始化 init 系统 [sysvinit systemd upstart]
- 如何准备IREB考试
- Ext.GridPanel 用法总结(一)—— Grid基本用法