Poj—2431 Expedition 优先队列使用经典例题

ESP32-S3 SPI接口实战:从引脚分配到高速通信配置 本文详细解析了ESP32-S3的SPI接口配置与高速通信优化技巧,从引脚分配到软件配置,再到DMA传输和时钟优化,帮助开发者快速掌握SPI通信技术。特别针对ESP32-S3的SPI2接口进行了实战演示,包括硬件连接和常见问题排查,适用于各类嵌入式开发项目。 阅读详情
就像《挑战程序设计竞赛》所说的——在到达加油站之前时,就获得一次在之后加油的权利。简单的说就是,当你经过第 i 个加油站时,先别加油,先压入优先队列,当你到达第 k 个加油站时,计算你车里的油够不够,若不够则从优先队列中选取一个在前面几站中最大的加油站,若还不够,加第二大的加油站.....
总的来说,先考虑能不能到下一站,能,则不加油;不能,就加前面几站中最大的。
这道题目:
1.给你加油站的距离是到终点的距离,而非是到卡车的距离。
2.给你的加油站的距离是随机的,而非排过序的,即在我看来必须有对加油站排序一次(当然可能是我太弱鸡的,还有其他方法^-^,有的话请告诉我,希望您不吝赐教)
3.优先队列的使用,默认是从大到小输出
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn = 10000 + 10;
int the_num;
struct Node {
    int pos, fule;
};
Node stop[maxn];
int the_dis, have_fuel;
void solve() {
    priority_queue<int> que;
    int count = 0, current_position = 0;
    for (int i = 0; i <= the_num; i++) {
        int need_dis =stop[i].pos - current_position;
        while (need_dis > have_fuel) {
            if (que.empty()) {
                puts("-1");return;
            }
            have_fuel += que.top();
            que.pop();
            count++;
        }
        have_fuel -= need_dis;
        current_position =stop[i].pos;
        que.push(stop[i].fule);
    }
    printf("%d\n", count);
}
bool cmp(const Node& a, const Node& b) {
    return a.pos < b.pos;
}
int main() {
    while (scanf("%d", &the_num) == 1) {
        for (int i = the_num - 1; i >= 0; i--) {
            scanf("%d%d", &stop[i].pos, &stop[i].fule);
        }
        scanf("%d%d", &the_dis, &have_fuel);
        //题意是距离终点的距离而非是离开车的距离,具体可看Poj—2431的Hint
        for (int i = 0; i < the_num; i++) {
            stop[i].pos=the_dis-stop[i].pos;
        }
        //把终点当做一个加油站
        stop[the_num].pos = the_dis;
        stop[the_num].fule= 0;
        //对所有的站点排序
        sort(stop, stop + the_num + 1, cmp);
        solve();
    }
    return 0;
}

如果先要快速掌握优先队列的STL的使用方法转:http://blog.youkuaiyun.com/notcoldheike/article/details/76915753
谢谢观看(^-^)!!!

一窥Memory测试算法及自我修复机制 摘要 为了满足新一代设备的需求,Memory的大小每三年就会增加4倍。深亚微米设备包含大量面积更小、访问速度更快的Memory。针对此类设计制定自动测试策略可以减少ATE(自动测试设备)的时间和成本。 内存故障的行为与经典的“Stuck-At”故障不同。因此,Memory的故障模型(由于其阵列结构)与标准逻辑的设计也是不同的。Memory测试除了进行故障检测和定位,还可以实现用冗余单元对... 阅读详情

相关推荐

uniapp实战:mui-player插件如何完美适配m3u8/flv直播流(附完整代码)

本文详细介绍了如何在Uniapp中使用mui-player插件完美适配m3u8和flv直播流,提供从基础配置到高级优化的全流程解决方案。通过动态加载策略、响应式布局和内存管理,实现跨平台稳定播放,适用于企业级直播应用开发。

weixin_29001655的博客 234

有关优先级队列的4道题 priority_queue

堆/优先级队列数组第k大的元素最小k个数前k个高频单词数据流的中位数 数组第k大的元素 题目链接 两种堆的使用方法: 使用元素总个数大小的小根堆,弹出k个元素后堆顶元素就是所有元素中第k大的元素。 维护一个k大小的大根堆,这样堆中就是所有元素前k个最大元素,堆中元素依次弹出直到最后一个即为第k大的元素。 下面的为方法一的代码实现 class Solution { public: int findKthLargest(vector<int>& nums, int k) {

lzh824359508的博客 1486

同态加密与SEAL库实战:CKKS参数调优避坑指南

本文深入探讨了同态加密技术中CKKS方案的参数调优实践,重点解析了SEAL库中`poly_modulus_degree`、`coeff_modulus`和`scale`三大核心参数的配置技巧与避坑指南。通过实战案例展示了如何平衡计算深度、精度与性能,为开发者提供了一套完整的参数优化方法论,帮助避免常见的'scale out of bounds'等错误,显著提升同态加密应用的可靠性和效率。

weixin_29315569的博客 225

3道经典的优先队列题

优先队列是一种十分强大的数据结构,它保持了一种动态的有序性,对于不断改变有入队的操作,而又需要某种最大或最小的操作的问题是再合适不过了,通常优先队列的实现是由最小堆或者最大堆完成的,并通过堆排序保持队列的有序性,模拟队列的结构,在实际比赛中要写一个堆排序还是要一定的时间的,但是stl中queue容器中已经可以实现优先队列,下面以三道基本的题目来演示priority_queue的作用。 聪明的

South__wind的专栏 3686

一文介绍Linux EAS

EAS只在系统负载不重时,即系统中每个CPU的利用率都低于其算力的80%时才被启用,而且选出的最节能CPU只有比线程当前运行的CPU节约能量大于6%时,线程才会迁移到该CPU运行。因此EAS为线程选择最节约能量的CPU来运行的前提条件是很苛刻的,针对重载场景(比如游戏),EAS的功能应该很少被使用起来,针对重载场景的功耗优化,这里可能是一个值得尝试的点。算力(capacity)是CPU调度中的一个基础概念,它反映的是一个CPU的计算能力,是个规格化的值,可以通过读取Android手机的文件节点。

youzhangjing_的博客 1234

问题:dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)

 1. 问题:Ubuntu安装软件的过程中出现依赖项的问题 “E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).” 按照指示执行如下两条命令都没有解决问题。 sudo apt-get -f install sudo apt-get --fix-broken ...

gloria_littlechi的博客 2万+

【leetcode】优先队列题目集合

一、在N个元素中选出前M个元素(N远大于M时) 在1,000,000个元素中选出前100名。 思路一:对N的元素进行排序,然后选出前M个元素,时间复杂度为O(NlogN)(采用快排或归并排序等高级排序算法) 思路二:使用优先队列,可以将时间复杂度降低为O(NlogM)。具体实现:使用优先队列维护M个元素,即每次向优先队列中加入一个元素时,需要将当前队列中的最小元素替换出去,保证队列中的M个元素...

littlemichelle 3622

HALCON 20.11实战:5步搞定工业图像异常检测(附完整代码)

本文提供了一份基于HALCON 20.11的工业图像异常检测实战指南。通过五个核心步骤——环境准备、数据预处理、模型训练、推理解析与工程化部署,详细演示了如何利用深度学习技术,仅使用正常样本快速构建并优化金属表面划痕等缺陷的检测模型,并附有完整可运行的HDevelop代码,助力工程师实现高效、智能的工业视觉质检。

weixin_29243279的博客 140

LeetCode练习九:树(下)——优先队列、堆排序

为了代码的简洁,我们建堆时,将下标为0的位置空出来不用,根节点从1开始。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素,你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。将数组转化为大顶堆,重复从大顶堆中取出数值最大的节点,并让剩余的堆结构继续维持大顶堆性质。:把移走了最大值元素以后的剩余元素组成的序列再构造为一个新的堆积(前面讲的新key下沉)。我们可以使用优先队列(大顶堆)来存储长度为k的窗口内的数组,这样堆顶元素一定是滑动窗口内的最大值。我们只能看到滑动窗口内的。

qq_56591814的博客 1038

医疗AI多智能体资源调度:用Python构建高性能MCU资源池

本文介绍了医疗AI服务平台中多智能体资源争用问题的解决方案。作者设计了一个基于MCU(多点控制单元)理念的中央资源调度器,通过三层架构(资源抽象层、调度策略层、执行控制层)实现对GPU、API、数据库等医疗资源的统一管理。系统采用增强版信号量机制处理可计数并发资源,优化令牌桶算法管理速率资源,并支持急诊优先、配额限制、审计合规等医疗场景特殊需求。核心代码提供了带优先级抢占的并发控制和医疗专用令牌桶实现,可有效解决多智能体资源争用导致的优先级混乱、资源利用不均等问题。

AllenLV的博客 3212

基于YOLO的智能视频监控异常行为检测研究:从算法原理到落地部署的全栈实践

本文深入探讨如何利用 YOLO(You Only Look Once)系列算法构建一套端到端的异常行为检测系统。文章首先回顾 YOLOv8 在时空建模上的局限,然后提出“YOLO-STA(Spatio-Temporal Aggregation)”轻量级改进框架,在公开数据集 UCF-Crime 上将异常行为检测的 mAP@0.5 从 72.4 提升到 80.1;接着给出完整训练、推理、部署的 Python 代码(PyTorch + TensorRT),并介绍如何仅用 4 GB 显存的 Jetson Xavi

博客 1318

优先队列(含详细解释和例题)

优先队列是一种特殊的队列,队列中元素都有一定的优先级,元素的出队顺序是根据它们的优先级来确定的。头文件为#include中,优先队列包含队列的所有操作,只是在队列的基础上加上一个排序,优先级高的先出队。定义优先队列:priority_queue1.Type:存储在优先队列中的元素类型。2.Container:用于底层存储的容器类型。STL中默认使用的是vector,但你也可以使用任何提供随机访问迭代器和支持front()以及。

2301_79899522的博客 1226

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-单端信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的单端拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 414

POJ 2431-Expedition

POJ 2431-Expedition 题意: 开车前往一个距离为l的城市,途中有n个加油站,每行驶一个单位的距离就会消耗一个单位的汽油,每到一个加油站都可以加油,问是否能到达目的地,能到达的话,最少需要加多少次油。 思路: 衷心提醒大家仔细看题!!!!!! 输入的距离不是距起点的距离,而是距终点的距离(白WA3发血亏),而且不一定按顺序给出,需要进行排序,所以用结构体还是比较方便的。 我们可以这样想,既然路过的每个加油站都可以加油,意思就是“经过一个加油站就获得了在之后任何一个时间加油的权力”。 为了最小

zzqwtc的博客 1799

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

优先队列的学习记录--例题:Expedition(POJ2431)

优先队列的学习记录--例题:Expedition--POJ2431 首先,什么是优先队列呢? 能够完成下列操作的数据结构叫做优先队列 □ 插入一个数值 □ 取出最小的数值(获得数值,并且删除) 当然,堆也能够实现以上操作,但STL里的priority_queue已经帮我们实现堆了,我们可以直接拿来使用。以下是一些操作的简单实用 priority_queuepque //优先队列的声明 pque.push(x) //优先队列的插入 插入一个整型的变量x pque.top() //读取

qq_45735298的博客 276

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

优先队列:POJ2431:Expedition

POJ2431:Expedition C++优先队列基本操作示例: #include<iostream> #include<queue> using namespace std; int main() { //声明 priority_queue<int> my; //插入元素 my.push(1); my.push(2)...

qq_45863710的博客 205

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【POJ 2431 --- Expedition】

【POJ 2431 --- Expedition】 Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock a...

来日浅谈的博客 680

POJ2431Expedition 优先队列

解题思路 在到达加油站 i 时,就获得了一次在之后的任何时候都可以加Bi 单位汽油的权利。每次从优先队列中取出最大的汽油。 · 在经过加油站 i 时,向优先队列中加入Bi · 当燃料箱空时,如果优先队列也是空的,则无法到达终点。否则取出优先队列中最大的元素,给卡车加油 import java.util.Comparator; import java.util.PriorityQueue; impo...

weixin_43588422的博客 232

POJ 2431 Expedition

POJ 2431 Expedition 坑:未必是按顺序给出输入,要自己先排序!(样例给的是排好序的,但实际上测试数据是乱序的,如果不排序无法确定遇见加油站的先后顺序) 排序时需要借助struct,因为如果只对dis[i]进行排序,无法保持dis与num之间的对应关系。 [关于struct排序中队sort的使用(https://blog.youkuaiyun.com/qq_40828914/article/d...

CarpeDiem 236

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

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

scf0920 1078

[POJ2431]Expedition[贪心][优先队列]

题目链接:[POJ2431]Expedition[贪心][优先队列] 题意分析:汽车油箱无上限,由于被牛儿们捅破了个口子,每移动1单位距离损失1单位油。初始有p单位油,中间有n个加油站,每个加油站可加油shop[i].amount,距离终点L的距离为shop[i].dis。汽车从初始位置开始出发,问:汽车能否到达终点?如果能,输出最少加油次数。否则,输出-1。 解题思路:既然要加油次数最少,那

闲停 628

POJ 2431——Expedition(优先队列)

链接:http://poj.org/problem?id=2431 题解 #include<iostream> #include<algorithm> #include<queue> using namespace std; const int MAX_N=1e4+50; int N,L,P; //N是加油站数,L是路程,...

SmallProgramer3121的博客 213

poj2431 -- Expedition

题目地址: http://poj.org/problem?id=2431 题目大意: 给n个城镇,分别是坐标和能加的油的数量,最后给车的位置l,和当前油的数量,每走一个单位,油会漏1点,问最后到达0至少需要加多少油,如果不能到达输出-1。 解题思路: 使用优先队列,利用反向思维,只要能到达的地方,就把当前城镇的油push到优先队列里面,然后只要队列不空,就不断的加队头的油,直到油的量大于等于距离l...

qq_43227036的博客 166

挑战程序设计竞赛 (优先队列) POJ 2431 & 3253

POJ 2431 Expedition 点击这里 查看题目 真的自闭,一个晚上写一道题。就是不知道哪里WA了,最后发现题目没有说一定是顺序输入的加油站(stop),所以在具体实现的时候需要先sort一下。/微笑 出错点 The first integer is the distance from the town to the stop; 2至N+1行给出的第一个数值是距终点(town)的...

ysugarr 269

优先队列简单介绍+例题POJ2431

优先队列一、优先队列简单介绍 优先队列是一种数据结构,能够实现插入一个数值,并且取出最小值(最大值)并删除等操作。 能够使用某种二叉树来实现优先队列,这种二叉树叫“堆”。堆分为小根堆和大根堆,小根堆的意思就是所有的子节点值一定不比父亲的值小,大根堆就是所有的子节点值一定不比父亲的节点值大。并且向堆中插入和取最小的值(或最大)的值得复杂度都为O(logn)。 二、STL中的优先队列都要加头文件 #in

WaveBridge的博客 1052

Expedition POJ - 2431 (优先队列)

题目链接Expedition - POJ 2431 - Virtual Judge 根据题意可知经过一个加油站可以选择加或者不加,但考虑到能否到达城镇,就得需要选择加最多的汽油,这就用到了优先队列的特性,即每次到达加油站的话就把能加的油量放进去,要是到不了就假设自己加了最多的那次油,如果所有油加上都到不了,只好输出-1了,尤其注意要看清加油站的坐标是以城镇为原点的,所以坐标数越大,说明加油站离我们就越近,这样我们可以先排一下序,让坐标大的在前面,小的在后面 AC代码: #include .

eyuhaobanga的博客 301
上一篇: Poj-1328 二维化一维 典型贪婪算法
下一篇: 快速掌握优先队列-代码
NotColdHeike
博客等级 码龄9年 2粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值