大意:

  有n个加油点,给出每个加油点距离终点的位置和能加多少油,最后一行给出总长度和最初的油量。求最少加几次油能到终点,不能到的话输出-1.

Sample Input

4
4 4
5 2
11 5
15 10
25 10

Sample Output

2

分析:

  一开始打算用dfs搜索,用dis[i]代表到i点时能加的油量,dfs(i,p,l),i代表当前位置,p代表当前油量,l代表总长,当i+p>=l时,这种情况符合条件,得每种能成立情况的加油次数再取最小值就好,但超时.

  于是想到用优先队列,能以目前的油量跑得越远,加油次数越少。所以优先队列里存放油量,用pre代表之前的位置,用rest代表当前油量,dis代表走多远,每走过一个点rest-=dis,把这个点的油量存入优先队列中,当rest<dis时从队列中取元素。没元素可取就意味着不能到终点。

代码:

  

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
struct point
{
int x,y;
}s[10010];
bool cmp(point a,point b)
{
return a.x<b.x;
};
int main()
{
int n;
cin>>n;
int i;
for(i=0;i<n;i++)
cin>>s[i].x>>s[i].y;
int l,p;
cin>>l>>p;
for(i=0;i<n;i++)
s[i].x=l-s[i].x;
sort(s,s+n,cmp);
s[n].x=l;
s[n].y=0;
priority_queue<int>q;
int rest=p;
int pre=0;
int ans=0;
for(i=0;i<n+1;i++)
{
int dis=s[i].x-pre;
while(rest<dis)
{
if(q.empty())
{
ans=-1;
break;
}
rest+=q.top();
q.pop();
ans++;
}
if(ans==-1)
break;
rest-=dis;
pre=s[i].x;
q.push(s[i].y); }
cout<<ans<<endl;
}

  

  

poj 2431的更多相关文章

  1. POJ 2431 Expedition(探险)

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

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

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

  3. POJ 2431 优先队列

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

  4. poj 2431 【优先队列】

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

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

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

  6. POJ 2431 Expedition (STL 优先权队列)

    Expedition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8053   Accepted: 2359 Descri ...

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

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

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

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

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

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

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

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

随机推荐

  1. Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/7867340 在前面一篇文章中,我们分析了And ...

  2. 擦肩而过的那块牌--记ACM_ICPC西安赛区现场赛

    说了那么多次orz,这次是真的orz了.去了西安打区域赛,也想过会打铁.但当终于那一刻确定打铁了之后.心里还是非常不开心的,颁奖的时候思考熊那家伙嚣张的举起来手中那个金杯,说实话闪到我眼了(太亮了QA ...

  3. react-native 环境配置及hello world

    一.前言 最近手头的工作繁多,有研究性的项目和系统研发,正好遇到同事离职,接手了框架的UI组件,不仅需要维护和填坑,还需要开发新的功能组件.因为身在H5-Hybird的框架部门,最近团队开始尝试使用R ...

  4. Test 2.14

    i am back 写博客是个好习惯啊,要坚持下去才行 这些天的日子实在堕落

  5. 读取webconfig里面的appSetting和connectionString

    <appSettings> <add key="SiteURL" value="http://moss2007:7000" /> < ...

  6. JS中表格的全选和删除要注意的问题

    在项目开发中,由于刚刚开始做项目,我对js还不是很精通,所以在用js对表格的全选和删除中遇到了不少问题,后来通过查找资料解决了,之后总结了一下关于js表格的全选和删除出现的一些问题,希望能帮助到大家. ...

  7. core-site.xml配置项:hadoop.tmp.dir

    hadoop.tmp.dir:A base for other temporary directories. 集群运行后,修改该配置项后,发现类似错误: -- ::, INFO org.apache. ...

  8. GPS坐标转换

    由于经常涉及到GPS程序的编写,现在貌似这个GPS是越来越火,越来越多的朋友在编写GPS程序,估计是个人都会遇到这个GPS坐标转换的问题,很惭愧的是,作为一个测量专业出身的学生,我还得时不时的要把这些 ...

  9. FullScreenFragment Code

    package com.dexode.fragment; import android.annotation.TargetApi; import android.app.Activity; impor ...

  10. Java IO流分析整理 .

    Java中的流,可以从不同的角度进行分类. 按照数据流的方向不同可以分为:输入流和输出流. 按照处理数据单位不同可以分为:字节流和字符流. 按照实现功能不同可以分为:节点流和处理流. 输出流: 输入流 ...