pat1033To Fill or Not to Fill (25)

Redash离线环境部署2020.1(centos+windows) 背景 Redash是一款开源的BI系统,核心功能是添加数据源,然后进行数据的可视化展示。一般会拿出来同Supervisor和Metabase进行选型比较,这里对三者的选型不做细致分析。而是给出在Redash开发环境部署踩过的坑,很多坑是自己琢磨出来的,网上几乎找不到更新的资料。适用于没怎么用过linux,也不怎么熟悉python的,用的是最新(master)的redash的代码(上一个发布版本... 阅读详情

题意分析:

(1)给出从出发地到目的地之间的若干个加油站的信息(每升价格 距出发点距离)以及油箱容量、目的地、每升油公里、油站数,出发时油箱为空,问要到达目的地的最少开销,如不能到达目的地,求出最多能够走多远。

这题分明显是一道贪心算法题,贪心算法题最主要的是理清贪心的策略:

算法前准备:

①将站点信息包装成结构体

②输入的站点时候过滤掉在目的地之外的站点(距离超过目的地),这些站点毫无用处,对后面的算法造成干扰

③对站点按照离出发点的距离升序排序

④将目的地看成是价格为0的加油站,这样处理起来比较统一

贪心策略:

①若车子当前在A站停留,若在A站加满油之后行驶却没有可达的任意站点,这时候最大距离为A.distance+maxDistance,maxDistance为加满油能行驶的最大距离

②若非①,设A站之后按顺序可达的站点有B、C、D....,在这些站中找出第一个价格比A站便宜的站点,然后在A站加到恰好能够到达此站的油量

③若非②,A之后可达站没有比A便宜的站点,且终点站包含在其中,则加油到恰好能够到达终点站

④若非③,在B、C、D....这些站中找出价格最便宜的站作为下一站,此时加满油行驶至该站,因为后面的站没有比当前更便宜的


可能坑点:

(1)当没有距离为0的站点时,永远不可达,最大距离永远是0.00

(2)邮箱油量(最大容量)、距离、每升油行驶公里数都是浮点数类型,且每到一个站加油时,要更新油箱中的油量才能计算出需要加多少油

(3)终点站一定没有剩余的油

(4)在贪心的后三步中无需考虑剩余的油是否可以支撑到下一个约定的加油站,理由很简单,如果剩余的油能够直接到达下一站,则此站无需停留。

(5)此题的测试数据不够严谨,在贪心策略的第三步,若加满油开到终点居然也可以通过测试

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;

struct station
{
    double price;
    double distance;
};
station s[501];
bool cmp(station a,station b)
{
    return a.distance<b.distance;
}
int main()
{
    double C,D,A;
    int N;
    cin>>C>>D>>A>>N;
    double maxDistance=C*A;
    int i=0;
    station temp;
    while(i<N)
    {
        cin>>temp.price>>temp.distance;
        //过滤掉目的地之外的加油站
        if(temp.distance<=D)s[i]=temp;
        i++;
    }
    s[i].price=0;
    s[i].distance=D;
    sort(&s[0],&s[i+1],cmp);
    if(s[0].distance!=0)
    {
        cout<<"The maximum travel distance = 0.00"<<endl;
        return 0;
    }
    double totalPrice=0;
    double maxLength=0;
    double remain=0;
    int j=0;
    while(j<i&&maxLength<D)
    {
        if((j<i-1)&&(s[j+1].distance-s[j].distance>maxDistance))
        {
            maxLength=s[j].distance+maxDistance;
            double cost=(C-remain)*s[j].price;
            totalPrice+=cost;
            break;
        }
        if(j==(i-1))
        {
            if(D-s[j].distance>maxDistance)
            {
                double cost=(C-remain)*s[j].price;
                totalPrice+=cost;
                maxLength=s[j].distance+maxDistance;
            }
            else
            {
                double cost=((D-s[j].distance-remain*A)/A)*s[j].price;
                totalPrice+=cost;
                maxLength=D;
            }
            break;
        }
        double minPrice=s[j+1].price;
        int nextStation=j;
        int cheapestStation=j+1;
        int flag=1;
        //确定下一个需要加油的站点
        for(int k=j+1;s[k].distance-s[j].distance<=maxDistance&&k<i;k++)
        {
            if(s[k].price<minPrice)
            {
                minPrice=s[k].price;
                cheapestStation=k;
            }
            if(flag&&s[k].price<=s[j].price)
            {
                nextStation=k;
                flag=0;
            }
        }
        if(minPrice>s[j].price)nextStation=cheapestStation;
        //如果下一确定要加油的站油费比当前站的油费要便宜或者相等,要加到恰好能够到达那一站
        //反之,如果下一确定要加油的站A比当前站的油费要贵,就干脆全加满,因为A站之后的站更不会比当前站更便宜了
        if(s[nextStation].price<=s[j].price)
        {
            //注意这里并不需要做判断,在此站加油,意味着油箱里的油不够到达下一站,反之如果能够到达下一站,何必要在此战停留呢
            double cost=((s[nextStation].distance-s[j].distance-remain*A)/A)*s[j].price;
            totalPrice+=cost;
            remain=0;
            maxLength=s[nextStation].distance;
        }
        else
        {
            if(D-s[j].distance>maxDistance)
            {
                double cost=(C-remain)*s[j].price;
                totalPrice+=cost;
                remain=C-(s[nextStation].distance-s[j].distance)/A;
                maxLength=s[nextStation].distance;
            }
            else
            {
                double cost=((D-s[j].distance-remain*A)/A)*s[j].price;
                totalPrice+=cost;
                remain=0;
                maxLength=D;
                break;
            }
        }
        j=nextStation;
    }
    if(maxLength==D)cout<<setiosflags(ios::fixed)<<setprecision(2)<<totalPrice<<endl;
    else cout<<"The maximum travel distance = "<<setiosflags(ios::fixed)<<setprecision(2)<<maxLength<<endl;
    return 0;
}

本题的坑点参考自Sup_Heaven的博客: http://blog.youkuaiyun.com/sup_heaven/article/details/19006527



ThingsBoard PE专业版解决方案技术文档——温度&湿度 温湿度解决方案 阅读详情

相关推荐

2025东方财富笔试考什么?cata能力测评攻略|答题技巧真题分享

4月10日-4月20日 专业笔试(行测+金融知识混合双打) 4月25日-5月10日 面试车轮战(AI面+半结构化+压力面) 5月15日起 Offer发放(谈薪必杀技:对标同花顺/雪球)这里不仅是金融极客的乐园,更是**“年薪30万管培生计划”**的主战场——你将用代码重构K线,用算法预判市场,成为资本市场的“数字先知”。东方财富,中国金融信息服务领域的“隐形冠军”,以**“金融数据+互联网”双擎驱动**,打造了覆盖证券、基金、期货的全生态交易平台。:• “我总坚持自己的方案”(HR:团队毒药!

Dgntsj的博客 3262

PAT 甲级 1033 To Fill or Not to Fill (25分) 贪心

PAT 甲级 1033 To Fill or Not to Fill (25分) 贪心

星辰不问 195

行人重识别技术(Re-ID)概述、研究现状以及相关数据集下载

ReID技术概述什么是ReID一般流程Re-ID特点研究现状难点数据集reid常用数据集以及下载链接评价指标实现思路研究方式基于表征学习基于度量学习基于局部特征全局特征切片姿态基于视频序列RQEN基于GANCamStyleDG-NetGAN总结对比未来方向建议文献 什么是ReID 行人重识别是指利用计算机视觉技术,判断在不同时间段、不同监控下出现的行人图像是否属于同一人员的技术。行人重识别是最近几年在视频分析领域下热门的研究领域,可以看做是人脸识别应用的拓展。现在大街上的监控较多,由于设备质量、成像光线、.

留缘的博客 1万+

PAT1033 旧键盘打字(Java)

注意:用Scanner sc=new Scanner(System.in)读入字符会导致测试点4超时,此处换成以下代码即可拿满。②针对出现字符“+”的情况用一个boolean类型变量记录,在判断完s1的所有字符后,再把大写的字母都加入到HashSet中。①将s1为字母的大小写都包含在hashset中(用hashset可以保证字符只出现一次)思路:用HashSet存储换掉的键盘。

weixin_46246000的博客 293

AI测试入门:如何测试AI对话模型/智能体?「详细介绍」

作为测试人员,我们需要掌握特定的技能和方法来有效地测试这些复杂的AI对话模型和智能体。传统的软件测试方法在这里可能不再完全适用,我们需要开发新的测试策略和技术来应对AI系统的独特特性。在这篇文章中,我们将深入探讨如何测试AI对话模型和智能体。

blues_C的博客 6860

2025华为od机试真题B卷【字符串计数匹配】Java&Go 实现

给你一个字符串str和整数k,返回满足以下条件的所有子字符串个数: 1.恰好包含k个字母。 2.数字0-9各出现至少一次。

MISAYAONE的博客 640

PAT甲级1033 To Fill or Not to Fill (贪心算法)

原题链接 PAT甲级1033 题目大意 一辆车从杭州出发,前往目的地,途径若干个加油站,若能到达目的地,输出加油所花费的钱,若不能,输出能到达的最大距离。 解题思路 本题的核心思想就是尽量使用最便宜的油行驶。所以我们建立一个数组cheapSta[500],cheapSta[i]表示从加油站i出发在满油行驶距离之内的第一个比当前油站价格更低的站或者价格最低的油站。这个数组也代表了行驶线路。 建立递归函数Travel()。路线既然确定好了,那么我们需要判断汽车怎么加油。根据贪心算法的思想,汽车应尽量使用便宜的

Dae_Lzh的博客 1422

实战避坑:基恩士KV8000 PLC与C#上位机链路通讯全流程实现(含ST代码+上位机源码)

本文详细讲解了基恩士KV8000 PLC与C#上位机的TCP链路通讯实现,从PLC端的ST代码编写、通讯配置,到上位机的通讯类封装、界面实现,再到实战避坑和性能优化,提供了完整的可复用方案。该方案已在实际产线项目中验证,支持实时数据采集和控制指令下发,稳定性和可靠性满足工业场景需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1176

PAT甲级 1033 To Fill or Not to Fill (25分)

1033 To Fill or Not to Fill (25分) 题目链接:PAT A 1033 题目大意:输入第一行给出四个数,分别是油箱最大容量,杭州到目的地的距离,每单位的油能让汽车跑多远以及加油站的数目。默认初始时汽车的油箱是空的,在任意加油站可以加任意数目的油(不能超过汽车油箱最大容量),要求输出从杭州到目的地所需要油价最少的钱数,如果无法到达目的地,则输出能够行驶的最大距离。 思...

weixin_43684054的博客 289

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

m0_51579041的博客 1万+

GEE APP:基于Sentinel-1 SAR数据的洪水检测与制图系统:利用GEE平台实现洪涝区域提取、面积统计及矢量栅格化导出

本文介绍了一个基于Google Earth Engine平台的Sentinel-1 SAR洪水监测应用,通过自动化流程实现洪水淹没区域的精准检测与分析。系统采用Refined Lee滤波降噪和Otsu自适应阈值算法,结合SRTM地形数据消除干扰,可自动计算淹没面积并生成可视化结果。该工具提供用户友好的交互界面,支持多格式数据导出,适用于灾害应急响应、环境监测和城市规划等领域,具有云平台处理、算法鲁棒性强和操作简便等技术优势。

此星光明博客 327

PAT——1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

Jamaple的博客 273

无限泛化!AI背景文字识别,腾讯文字六宫格

本文介绍了生成大规模文字验证码数据集的方法,通过使用上百种字体和2万+字库,结合随机背景和数十种图像增强技术,生成了2000万+的多样化样本。该方法采用二阶段训练策略,确保模型对字体、形态、形变等具有强泛化能力,可适配腾讯、咸鱼等多种平台的文字验证码识别,包括生僻字和复杂形变情况。生成的模型在多种验证码场景下表现优异,但强调该方法仅用于技术研究,严禁非法用途。

码王吴彦祖的博客 563

PAT 1033. To Fill or Not to Fill (25)

1033. To Fill or Not to Fill (25) 时间限制 10 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 ZHANG, Guochuan With highways available, drivi

凌风 2316

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PAT甲级 1033 To Fill or Not to Fill(25) (贪心)

PAT甲级 1033 To Fill or Not to Fill(25) (贪心)

NHS6671的博客 320

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PAT真题练习(甲级)1033 To Fill or Not to Fill (25 分)

PAT真题练习(甲级)1033 To Fill or Not to Fill (25 分) 原题网址:https://pintia.cn/problem-sets/994805342720868352/problems/994805458722734080 A graph which is connected and acyclic can be considered a tree. The ...

Be Quick & Clever & Lucky 403

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

1033. To Fill or Not to Fill (25)-PAT

With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different ga

兵临城下 829

PAT甲级1033 To Fill or Not to Fill (25 分)

1033To Fill or Not to Fill(25分) With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the...

Dexter 269

【PAT甲级】1033 To Fill or Not to Fill (25分)

解题过程的小记录,如有错误欢迎指出。 难度:四星 小导航~题目分析注意点我的解题过程思路bug代码dalao的代码借鉴点 题目分析 注意点 我的解题过程 思路 bug 一开始毫无思路,无从着手 代码 dalao的代码 全部代码因版权原因不放出来,大家可以自行去柳神博客购买或者参考晴神的上机笔记~ 借鉴点 ...

SpicyChicken的自我修养 350

PAT A1033 To Fill or Not to Fill (25分)

#include <cstdio> #include <algorithm> using namespace std; struct Station{ double price; double dis; }; bool cmp(Station s1, Station s2){ return s1.dis < s2.dis; } int main(){ int num; double unit, sumdis, maxcap; scanf("%lf %lf .

weixin_45964844的博客 139

PAT 1033 To Fill or Not to Fill (25分)

题目 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are asked to

余生愿你常欢笑 328

PAT A 1033 To Fill or Not to Fill (25 分)

一、思路 (一)最低油价方案: 1.若前面有一个价格比本站便宜的油站,那就去那边加更便宜的油,且只在本站加够到达低价油站的油; 2.若前面油站都比本站要贵,说明本站的油是当前最便宜的,要把油加满,下一个目的地的前面一段路上相对最便宜的油站。 (二)逻辑: 有两种情形:下一个目的地是油站,或下一个目的地是终点。 1.下一个目的地是油站的情况: (1)若前方存在价格更便宜的油站,且在可达范围内,且比终...

Siumai's Blog 217

PAT (Advanced Level) 1033 To Fill or Not to Fill (25分)【贪心】

PAT (Advanced Level) 1033 To Fill or Not to Fill (25分)【贪心】 题意:给你油箱容量 CCC,给你最远想要到达的距离 DDD,给你汽车每升油所能支持的距离 DavgD_{avg}Davg​,给你加油站的数量 NNN。 然后每个加油站,给你距离起点的位置以及油价。 问,你最少可以花费多少美元到达终点。 分析:作为老 DPDPDP 恐慌性选手,起手就是一顿动态规划,然而最后复杂度在 30000∗500∗50030000 * 500* 50030000∗500∗

Irish_Moonshine的博客 246

PAT甲级-1033 To Fill or Not to Fill (25分)

点击链接PAT甲级-AC全解汇总 题目: With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time ...

卷子的博客 371

PAT 甲级 1033 Fill or Not to Fill (25分)

PAT 甲级 1033 Fill or Not to Fill (25分) 题目 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations ...

努力不脱发的程序媛 253

【贪心】PAT 1033. To Fill or Not to Fill (25) code up To Fill or Not to Fill

1033. To Fill or Not to Fill (25) 声明:本文转自大佬的博客,博主自己拜读后写一下自己的想法 传送门:传送门 时间限制 10 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 ZHANG, Guochuan With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a

weixin_45981887的博客 216
上一篇: pat1032Sharing (25)
下一篇: pat1034Head of a Gang (30)
LostStephon
博客等级 码龄11年 14粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值