POJ2431_Expedition_KEY
由题目可得,在一条路上有N个加油站,在距离终点a[i](细节)的位置上,你需要通过长度为L的路,油箱的容量是无限的,但是初始只有P点油,经过每个加油站时可以选择加b[i]的油,问最少加油几次可以到达终点。
可以看出经过每一个加油站时可以有两个选择:加油或不加油,但过去了就不能回来。
假如我们就要没油了,我们是不是这样想:我当时应该在XX加油站加油才对。
所以,我们假设我们可以时空穿梭,回到经过XX加油站的时候,立即加油。
开一个堆记录经过的、未加油的加油站。
在即将没油时从堆里拿出油多的加油站加油,直到又有油可以到达下一个加油站。
这里有一个细节,要再设置一个在终点的、油量为0的加油站。
code:
#include <cstdio>
#include <cctype>
#include <algorithm>
#include <queue>
using namespace std;
inline char getch(){
static char fl[],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,,,stdin),A==B)?EOF:*A++;
}
inline int read(){
char c;
while(!isdigit(c=getch()));int x=c-'';
while(isdigit(c=getch()))x=x*+c-'';
return x;
}
int L,P,i,now,ans;
struct node{
int x,y;
}a[];
inline int cmp(node x,node y){return x.x<y.x;}
int main(){
int N;
while(~scanf("%d",&N)){
for(i=;i<=N;i++)a[i].x=read(),a[i].y=read();
L=read(),P=read();
for(i=;i<=N;i++)a[i].x=L-a[i].x;
a[++N].x=L;priority_queue<int>w;
sort(a+,a+N+,cmp);
for(i=;i<=N;i++){
int cost=a[i].x-now;
while(P<cost){
if(w.empty()){puts("-1");return ;}
P+=w.top(),w.pop(),ans++;
}
w.push(a[i].y);
now=a[i].x,P-=cost;
}
printf("%d\n",ans);
}
}
POJ2431_Expedition_KEY的更多相关文章
随机推荐
- PTA练习题之6.1统计字符串中大小写字母的个数(10 分)
统计字符串中大小写字母的个数(10 分) 分别统计字符串中大写字母和小写字母的个数. 函数接口定义: void fun ( char *s, int *a, int *b ); 其中s.a.b 都是用 ...
- [转]How to Leak a Context: Handlers & Inner Classes
Consider the following code: public class SampleActivity extends Activity { private final Handler mL ...
- bzoj3106 [cqoi2013]棋盘游戏
Description 一个n*n(n>=2)棋盘上有黑白棋子各一枚.游戏者A和B轮流移动棋子,A先走. l A的移动规则:只能移动白棋子.可以往上下左右四个方向之一移动一格. ...
- linux一切皆文件之文件描述符
一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件.如:普通文件.目录.字符设备.块设备.套接字等2.当一个文件被进程打开,就会创建一个文件描述符.这时候,文件的路径就成 ...
- Core Animation 与 GPU
https://en.wikipedia.org/wiki/Core_Animation#cite_note-apptech-1 Core Animation provides a way for d ...
- Android HttpClient自己主动登陆discuz论坛!
你登陆论坛的时候,我们先看看浏览器干了什么事儿: 用Firefox打开HiPda 的登陆页面,输入用户名和password,点登陆. 以下是通过firebug插件获取的数据: 能够看到浏览器这个htt ...
- js 关联着数组中追加元素
var arr_data = new Array(); for ( var i in data.data ){ arr_data.push(arr_data[i] = data.data[ i ] ) ...
- 给已安装的NGINX添加新的模块
给已安装的NGINX添加新的模块 2018-11-16 14:02:45 Visit 0 使用 nginx -V 查看当前nginx的信息,包括版本号和configure编译配置信息 版本号 : ...
- C#通过拼接协议的方式来发送邮件类库
using System; using System.Collections.Generic; using System.Net; using System.Net.Mail; using Syste ...
- SignalR 教程二 服务端广播
转帖官方教程:Tutorial: Server Broadcast with SignalR 2 http://www.asp.net/signalr/overview/getting-started ...