第十九天:优先队列

XYNUOJ 1254 汽车加油问题—贪心算法 欢迎访问XYNUOJ 1254: 汽车加油问题 时间限制: 1 Sec  内存限制: 128 MB 提交: 8  解决: 7 [提交][状态][讨论版][Edit] [TestData] 题目描述 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 【设计任务】 对于给定的n和k个加油站位置 阅读详情

今天是释然发题解的第十九天,以后每一天都会和大家分享学习路上的心得,希望和大家一起进步,一起享受coding的乐趣。
本文约1400字,预计阅读4分钟
昨天我们学习了动态规划之线型动态规划,忘记的小伙伴们可以看一下哦:

线型型

今天我们来聊一聊优先队列,明天和大家分享动态规划的相关题目:


关于优先队列的介绍呢推荐一篇文章,作者说的很好:
优先队列

例题一:expedition

来自POJ2431:传送门
Expedition (POJ 2431)
你需要驾驶一辆卡车行驶i单位距离。最开始时,卡车上有尸单位的汽油。卡车每开 1 单位
距离需要消耗 1 单位的汽油。如果在途中车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点。在途中一共有n个加油站。第 I个加油站在距离起点a[i]单位距离的地方 ,实际上POJ2431的输人数据中给的是加油站到终点的距离。在这里我们为了方便起见,改成了从起点到加油站的距离
可以给卡车加b[i]单位汽油。假设卡车的燃料箱的容量是无限大的,无论加多少油都没有问
题 ,那么请问卡车是否能到达终点?如果可以,最少需要加多少次油?如果可以到达终点,
输出最少的加油次数,否则输出-1。
也限制条件
• 1 « N « 10000
1<=L<=1e6,1<=P<=1e6;
1 <=Ai<L, 1<=Bi<=100

解题思路一:

当初呢,我也是希望能够每一次拿出队列里的最大的加油量,给汽车加油,这样加油的次数一定最少,正好STL自带优先队列,这就很好!
思路就是:我们碰到加油站就入队,当油量将要消耗完毕的时候呢进行判断:
如果剩余的加上最大的还不够加油的话,就直接返回-1,否则就最多的数出队,然后继续行驶:
这题最难的地方应该就是优先队列了,只要我们每次选取最大的加油就行,当时的我还没有学优先队列,就就就很难受,害,慢慢来,不急。

//输入
for(i=1;i<=n;i++)
    {
        cin>>dis[i]>>num[i];
    }
int pos=0,ans=0,d=0;
当前位置,最小的加油次数,距下一个加油站的距离
    priority_queue<int>que;//优先队列
    /*if(tank<dis[1])
    {
        cout<<-1<<endl;
        return 0;
    }
    当时我还在想,需要判断油量够不够,发现要判断多次,所以一看就是要放在循环里面,这也算是一个启示吧
    */
for(i=1;i<=n;i++)
    {
        d=dis[i]-pos;
        while(tank-d<0)
        {
            if(que.empty())
            {
                cout<<-1<<endl;
                return 0;
            }
            else
            {
                tank+=que.top();
                que.pop();
                ans++;
            }
        }
        pos+=d;
        tank-=d;
        que.push(num[i]);
    }
    cout<<ans<<endl;

这种题自己写还是很有成就感的吧,哈哈哈哈哈,不知道大家有没有同感,只要有兴趣,自己觉得值得开心就好!

其实也是一种贪心的思想在里面呢学过每一种思想,其实对我们的做题都是很有帮助的呢!

好了,今天的优先队列就到这里。
释然每天发布一点自己学习的知识,希望2年后我们也能在ACM的赛场上见面,一起去追寻自己的程序猿之路吧!

后期也会和大家一起分享学习心得和学习经验呢,明天我们不见不散哦!

下期预告:

动态规划的例题

如果大家有什么建议或者要求请后台留言,释然也想和大家一起进步呀!
联系方式:shirandexiaowo@foxmail.com

模块学习(一)——编码电机 编码电机测速 阅读详情

相关推荐

使用MKL+Eigen求解稀疏矩阵方程组

问题:求解Ax=b的解,其中,A为大型稀疏矩阵,长和宽分别为1500^2。 一般思路: (1)A为对称正定矩阵,对A使用cholesky分解。 (2)A为对称不定矩阵,使用LDL‘分解,即: PAP'=LDL' 其中,L为单位下三角矩阵,D由阶数为1或者2的对角块构成,P是置换矩阵。 (3)不对称矩阵:LU分解。 (4)长方形矩阵(长...

薛晓伟 3445

Expedition

题目:你需要驾驶一辆卡车行驶L单位距离。最开始时,卡车上有P单位汽油。卡车每开1单位距离需要消耗1单位的汽油。如果在途中汽车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点。在途中一共有N个加油站。第I个加油站在距离终点Ai单位距离的地方,最多可以给卡车加Bi单位汽油。假设卡车的燃料箱的容量是无限大的,无论加多少油都没问题。那么请问卡车能否到达终点?如果可以,最少需要加多少次油?如果可以到达终点输

coocner的博客 402

使用【阿里云百炼】搭建自己的大模型

本文介绍阿里云百炼大模型平台,其为企业级服务平台,融合通义千问等模型,支持多模态能力,提供一站式工具降低开发门槛。重点讲解智能体应用及大模型搭建步骤,含进入创新应用界面、选模型配参数、输指令、导数据、加载知识库、获取API Key、加样例库、配置MCP,还提及模型调试与多平台发布,并附试用链接,助力企业与开发者快速搭建适配业务的AI模型。

Larry的博客 4738

南阳理工ACM-12题-喷水装置(二)

                                                                               喷水装置(二)                                                   时间限制:3000 ms  |  内存限制:65535 KB                                 ...

wzwdwjj的专栏 217

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8267

eNSP安装教程

eNSP安装教程一、安装eNSP1、先安装依赖组件2、安装eNSP主程序eNSP+V100R003C00SPC100+Setup ---不要安装在中文路径下3、安装完成后注册设备 一、安装eNSP 程序包位置:https://drive.weixin.qq.com/s?k=AOgAQQfOAAsw1wAKEgAAcAbgbSAKQ 1、先安装依赖组件 依赖组件: WinPcap_4_1_3 —直接下一步,但不要安装在中文路径下 Wireshark_v3.4.6 或者wireshark-win3

qimowei的博客 8668

编程题-汽车加油-优先队列

/* * test.cpp * * Created on: Feb 3, 2015 * Author: lizo */ /* 你需要驾驶一辆卡车行驶L单位距离。最开始时,卡车上有P单位的汽油。卡车没开1单位距离 需要消耗1单位的汽油。如果在途中车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点。 在图中一共有N个加油站。第i个加油站在距离起点Ai单位距离的地方,最多可以

Lizo_Is_Me的专栏 2251

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2623

汽车加油问题

汽车加油问题 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。并证明算法能产生一个最优解。 对于给定的n和k个加油站位置,计算最少加油次数。 输入 输入数据的第一行有2 个正整数n和k

1651

YOLOv8改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU)

本文记录的是改进YOLOv8的损失函数,将其替换成。现有研究通过利用边界框之间的几何关系来提高回归性能,但忽略了困难样本和简单样本分布对边界框回归的影响。不同检测任务中困难样本和简单样本的分布不同,对于简单样本占主导的检测任务,关注简单样本的边界框回归有助于提高检测性能;对于困难样本比例较高的检测任务,需要关注困难样本的边界框回归。,提高检测器在不同检测任务中的性能。实现的。

Limiiiing的博客 1222

Vue - 超强实现网页禁止浏览器缩放功能,浏览器缩放时保持网页不变形、元素不会被挤压等,屏蔽浏览器鼠标滚轮缩放页面(提供详细示例代码,一次引入整个网站无人可以搞乱你的页面布局及样式)

vue,nuxt,禁止浏览器缩放,如何用户缩放浏览器导致页面变形,网页缩放后页面变形了怎么办,怎么解决网站被缩放后元素乱套错乱,vue怎么禁止网页不被缩放,vue如何禁止浏览器缩放,vue缩放网页变形影响布局怎么办,vue电脑分辨率及缩放导致页面变形的问题,前端页面解决浏览器或者系统被放大和缩小导致的显示问题,Vue中页面自适应缩放,如何防止Vue页面缩放时变形/调整大小,Vue项目中,防止页面被缩放和放大,vue等比例缩放网页,网页缩放后界面变形咋办,禁止页面缩放,vue禁止浏览器改变窗口大小,Vue项目

🏆 前端领域优质创作者 1万+

Java学习第十九天 堆和优先队列

堆 优先队列

weixin_58070636的博客 142

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

蓝桥杯冲刺第十九天:博弈论与算法模型实战精讲

在算法竞赛与编程学习中,理解核心算法模型并掌握其应用是提升解题能力的关键。以经典的尼姆博弈模型为例,其本质在于通过计算石子堆数量的异或和来判断必胜态与必败态。掌握这一原理,不仅能解决基础的博弈问题,更能将其思想迁移到更复杂的场景中,如资源分配、游戏策略等,体现了算法模型在解决实际问题中的通用价值。本文以蓝桥杯真题“高僧斗法”为切入点,深入剖析如何将具体问题抽象为尼姆博弈模型,并详细讲解Java代码实现中的关键步骤与常见陷阱,例如如何高效处理输入输出、优化集合类使用以及避免递归中的栈溢出问题。通过结合动态规划

weixin_34221073的博客 435

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

嵌入式学习第十九天

这样出现频率高的字符用较短的编码,频率低的用较长的编码,从而达到整体压缩的效果通过构建一棵二叉树来实现的。然后,每次取出权值最小的两个节点,合并成一个新的节点,新节点的权值是这两个节点的权值之和。然后把新节点放回优先队列中。今天我了解了二叉树的知识,知道怎么生成一个满二叉树,还可以用用递归法 前序遍历,中序遍历,和后序遍历.我还了解了DFS:深度优先遍历 BFS:先找到最左边的叶子节点入栈,在出栈,将根节点和有孩子入栈,在找最左边的叶子节点 通过打印的位置不同 可以 打印出前序遍历和中序遍历的顺序。

itnwrsobl的博客 260

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

二分+优先队列(堆)(第十九届浙大城市学院程序设计竞赛)L题

#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1001000; ll t,n,a[N],ans,k; ll check(ll mid)// x就是mid { ll i; //下面定个小根堆q priority_queue<int, vector<int>, greater<int>> q; ...

m0_64177548的博客 595

每天6道题之第十九题:查找和最小的K对数字(堆)

前言 题目描述 给定两个以升序排列的整形数组 nums1 和 nums2, 以及一个整数 k。 定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2。 找到和最小的 k 对数字 (u1,v1), (u2,v2) … (uk,vk),按从小到大的顺序输出它们的和。 解题思路 其实我们要有一个先验知识,就是,遇见K问题的时候,要想到优先队列,包括大顶堆和小顶堆; 回顾: 像我们上一题中“前K个高频元素”,我们创建小顶堆,将前K个高频的元素都入堆,当新元素来临时,只要比较堆

dreamlpx的博客 288

第十九届浙大城市学院程序设计竞赛

I.Array Division 数组分组,要求每组的和大于等于0,求最多可以分成几组。 #include<bits/stdc++.h> using namespace std; #define ll long long const int N = 5010; ll s[N]; int dp[N]; int a[N], b[N]; int main() { int T; cin >> T; while(T -- ) { int n; scanf("%d",

m0_51797955的博客 643

首师大附中集训第十九天:可追溯化数据结构

正题 首先讲了很多东西:主席树,区间第K大,区间第K大EXT,块状链表,可持久化块状链表,区间第 K 大问题 EXTEXT,树上路径第K大问题...... 但是这些东西太难了,所以我们来讲一讲可追溯化数据结构。 定义:现在有一个数据结构,支持一些修改操作和询问操作 我们在进行一些修改之后,发现某一次修改操作输入是错的,希 望修改这个修改操作,然后继续(...

Deep_Kevin的娱乐空间 1268

第十九届浙大城市学院程序设计竞赛(同步赛)

第十九届浙大城市学院程序设计竞赛(同步赛) 比赛中由于没看到I题的数据范围,写了个数状数组优化的LIS,一直写挂了,中途就去打游戏了,最近比较忙…剩余题天梯赛后补 A. Who is The 19th ZUCCPC Champion 思路:输出任意字符串即可 Code: #include <bits/stdc++.h> using namespace std; #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); #de

qq_53287227的博客 970

M-灾难预警-浙江农林大学第十九届程序设计竞赛暨天梯赛选拔赛

题目:灾难预警 众所周知,浙农林是一条河。 由于浙江农林大学的特殊地形,当你在下雨后漫步在农林大路上的时候 难免会出现一脚踩进一个水坑的情况的情况。而农农非常不喜欢踩到水坑的感觉, 请你帮忙设计一个程序来帮助农农判断他能否在不踩入水坑的情况下回到 寝室。 已知,浙江农林大学可以表示为一个 N * N 的矩阵。 对于每个位置有一个海拔数据 h[i][j],当水位高度大于 h[i][j] 的时候, 这个位置就会形成一个水坑。 农农现在的坐标是 (1, 1), 他的宿舍位于 (n, n). 农农只可以沿着上下左右

MarilynYangYang的博客 341

middles函数python_Python之路【第十九篇】:爬虫

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。RequestsPython标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作...

weixin_39962758的博客 426

护网行动是什么?凭什么它能让网安人年薪翻倍?(第十九弹·护网篇)

护网行动是国家级的实战演练,也是网安人身价翻倍、能力跃迁的最好机会。如果你是新人,把护网当作你的第一个"职业里程碑"——从现在开始学,明年7月,争取以防守队成员的身份站上护网的战场。"没有参加过护网的网安生涯,是不完整的。因为只有在护网的战场上,你才会真正理解——自己学的所有技术,到底在保护什么。—— 你的网安职场引路人。

2301_80217102的博客 231

20162307 2016-2017-2《程序设计与数据结构》课程总结

20162307 2016-2017-2《程序设计与数据结构》课程总结 每周作业链接汇总 20162307 2017-2018-1 《程序设计与数据结构》第1周学习总结:第十二章 算法分析、算法效率、增长函数和大o符号 20162307 2017-2018-1 《程序设计与数据结构》第3周学习总结:第十三章 查找与排序、在软件开发过程中很常见的任务就是查找某一具体的元素,并且将...

bafeiqiao7632的博客 229

【19行代码AC,简洁】1029 Median (25 分)

立志用最少的代码做最高效的表达 PAT甲级最优题解——>传送门 Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1 = { 11, 12, 13, 14 } is 12, and the median of S2 = { 9, 10, 15, 16, 17 } is 15. The median of

weixin_43899069的博客 592

英雄算法联盟---五月集训总结

知识星球---英雄算法联盟

LAdestiny的博客 1194

【2014年寒假日常记录表(2014.1.9—2.23,45天)】

  2014年寒假日常记录表(2014.1.9—2.23,45天) 日期 周次 寒假时间 编程 日记 阅读 备注 2014.1.9 周四 前一天 完成 完成        (完成了一半的图形输出题) ...

weixin_34067049的博客 243
上一篇: 第十八天:动态规划之线性规划问题
下一篇: 第二十天:填数问题
Shirandexiaowo
博客等级 码龄7年 45粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shirandexiaowo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值