papamelong 226. 远征 Expedition(挑战程序设计竞赛)
地址 https://www.papamelon.com/problem/226
你需要驾驶一辆汽车行驶 L 单位距离。
最开始时, 卡车上有 P 单位的汽油。
汽车每开 1 单位距离需要消耗 1 单位的汽油。
如果在途中车上的汽油耗尽, 车就无法继续前行, 因而无法达到终点。
在途中一共有 N 个加油站。第ii 个加油站在距离 终点 A_i单位距离的地方, 最多可以给汽车加 B_i单位汽油。
假设卡车的燃油箱的容量是无限大的。问最少加多少次汽油可以达到终点 ?
无法达到请输出-1。
输入
第一行是 N,表示有多少个加油站
接下来 N 行,每行两个整数 A_i, B_i,表示每个加油站距离 终点 的位置,以及最多可以加多少油
最后一行是 L, P
1≤N≤2∗10^4
1≤L≤10^6
1≤P≤10^6
1≤Ai≤L
1≤Bi≤100
输出
一个整数,表示最少加多少次油
样例 1
输入
4
4 4
5 2
11 5
15 10
25 10
输出
2
解答
本题目使用贪心算法,首先在已有的油的情况下,尽可能走远。如果油不足以达到终点或者 下一个点。从已经经过的点中选取一个加油。 由于要求加油次数最小,那么在可选择的加油站中选择可加油最多的站点加油。(同样是加一次油,贪心选择加油最多的站点,这样可以将加油次数的可能降低到最低)
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
priority_queue<pair<int, int>, vector<pair<int, int>>> q;
int n;
const int N = 20010;
pair<int, int> dat[N];
int l, p;
int main()
{
cin >> n;
for (int i = 0; i < n; i++) {
cin >> dat[i].first >> dat[i].second;
}
cin >> l >> p;
sort(dat,dat+n);
int currpos = l - p;
int ans = 0;
for (int i = n - 1; i >= 0; i--) {
if (currpos <= 0) { break; }
if (currpos <= dat[i].first) {
q.push({ dat[i].second,dat[i].first });
}
else {
while (currpos > dat[i].first && !q.empty()) {
currpos -= q.top().first; q.pop(); ans++;
}
if (currpos > dat[i].first) { break; }
else{ q.push({ dat[i].second,dat[i].first }); }
}
}
while (currpos > 0 && !q.empty()) {
currpos -= q.top().first; q.pop(); ans++;
}
if (currpos <= 0) {
cout << ans<< endl;
}
else {
cout << -1 << endl;
}
return 0;
}
作 者: itdef
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-08-14 AcWing 1059. 股票买卖 VI Leetcode714. 买卖股票的最佳时机含手续费 dp
2020-08-14 AcWing 1058. 股票买卖 V Leetcode309. 最佳买卖股票时机含冷冻期
2020-08-14 LeetCode 020. 有效的括号 数据结构 栈