【poj2431】驾驶问题-贪心,优先队列
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 29360 | Accepted: 8135 |
Description
To repair the truck, the cows need to drive to the nearest town (no
more than 1,000,000 units distant) down a long, winding road. On this
road, between the town and the current location of the truck, there are N
(1 <= N <= 10,000) fuel stops where the cows can stop to acquire
additional fuel (1..100 units at each stop).
The jungle is a dangerous place for humans and is especially
dangerous for cows. Therefore, the cows want to make the minimum
possible number of stops for fuel on the way to the town. Fortunately,
the capacity of the fuel tank on their truck is so large that there is
effectively no limit to the amount of fuel it can hold. The truck is
currently L units away from the town and has P units of fuel (1 <= P
<= 1,000,000).
Determine the minimum number of stops needed to reach the town, or if the cows cannot reach the town at all.
Input
* Lines 2..N+1: Each line contains two space-separated integers
describing a fuel stop: The first integer is the distance from the town
to the stop; the second is the amount of fuel available at that stop.
* Line N+2: Two space-separated integers, L and P
Output
Line 1: A single integer giving the minimum number of fuel stops
necessary to reach the town. If it is not possible to reach the town,
output -1.
Sample Input
4
4 4
5 2
11 5
15 10
25 10
Sample Output
2
Hint
The truck is 25 units away from the town; the truck has 10 units of
fuel. Along the road, there are 4 fuel stops at distances 4, 5, 11, and
15 from the town (so these are initially at distances 21, 20, 14, and
10 from the truck). These fuel stops can supply up to 4, 2, 5, and 10
units of fuel, respectively.
OUTPUT DETAILS:
Drive 10 units, stop to acquire 10 more units of fuel, drive 4 more
units, stop to acquire 5 more units of fuel, then drive to the town.
Source
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<queue>
#include<algorithm>
#define int long long
#define N 100050
using namespace std;
int n,L,p,sum,ans,cnt;
struct node
{
int dis,l;
bool operator < (const node &a) const
{
return dis > a.dis;
}
}e[N];
priority_queue <int> q;
signed main()
{
scanf("%lld",&n);
for(int i=0,a,b;i<n;i++)
{
scanf("%lld%lld",&e[i].dis,&e[i].l);
}
scanf("%lld%lld",&L,&p);
int tmp=0;
q.push(p);
sort(e,e+n);
while(L>0&&!q.empty())
{
L-=q.top();
ans++;
q.pop();
while(L<=e[tmp].dis&&tmp<n)
q.push(e[tmp++].l);
}
if(L>0) printf("-1\n");
else printf("%d\n",ans-1);
return 0;
}
【poj2431】驾驶问题-贪心,优先队列的更多相关文章
- hihoCoder 1309:任务分配 贪心 优先队列
#1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN, ...
- UVA 11134 - Fabled Rooks(贪心+优先队列)
We would like to place n rooks, 1 ≤ n ≤ 5000, on a n×n board subject to the following restrict ...
- C. Playlist Educational Codeforces Round 62 (Rated for Div. 2) 贪心+优先队列
C. Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 /* 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀 ...
- [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)
传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...
- Painting The Fence(贪心+优先队列)
Painting The Fence(贪心+优先队列) 题目大意:给 m 种数字,一共 n 个,从前往后填,相同的数字最多 k 个在一起,输出构造方案,没有则输出"-1". 解题思 ...
- CF140C New Year Snowmen(贪心+优先队列)
CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...
- BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec Memory Limit: 162 MBSubmit: 3785 Solved: 1747[Submit][Statu ...
随机推荐
- 导入别的项目到我的eclipse上出现红色感叹号问题
项目红色感叹号问题问题 一般我们在导入别的项目到我的eclipse上面会发现,项目上面有红色的错误 原因 因为我电脑上的 jdk版本和别人电脑jdk版本不一样,那么对于的jre版本也不 ...
- (转)从0移植uboot(三) _编译最小可用uboot
ref: https://www.cnblogs.com/xiaojiang1025/p/6436752.html 前两篇介绍了uboot-2013.01的配置原理以及大体的运行流程,本文将讨论如何对 ...
- leetcode --165--php
class Solution { /** * @param String $version1 * @param String $version2 * @return Integer */ functi ...
- ORACLE:锁被未决分布式事务处理 18.27.160617 持有
1. 以管理员账号登陆 2. rollback force '18.27.160617 ';
- 设置pictureBox的边框颜色(转载)
原文地址:https://www.cnblogs.com/hardsoftware/p/5720545.html private void pictureBox2_Paint(object sende ...
- 设计模式(三)——装饰器模式(Decorator Pattern)
发现太过于刻意按照计划来写博客,有点不实际,刚好最近在一个网课上复习AOP的知识,讲到了装饰器模式和代理模式,顺便复习总结一下. 首先了解一下装饰器模式,从名字里面可以看出来,装饰器模式就类似于房子装 ...
- Could not retrieve transaction read-only status from server问题排查
今天发现save task的时候经常后台会报这个错,而且有的时候还会卡住等20几分钟才执行完. 2019-11-12 15:08:29.410 http-nio-9080-exec-6 ERROR o ...
- JS 断点调试心得
1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断 ...
- 关于NSOperationQueue,一个容易让初学者误解的问题
凡是学习NSOperationQueue的人,都会遇到setMaxConcurrentOperationCount这个函数.在网上的许多博文中,都将setMaxConcurrentOperationC ...
- 【Hibernate】一级缓存
一.概述 二.证明Hibernate的一级缓存的存在 三.一级缓存中快照区 四.管理一级缓存 五.Hibernate一级缓存的刷出时机 六.操作持久化对象的方法 一.概述 什么是缓存: 缓存将数据库/ ...