算法训练VIP 旅行家的预算

原题链接:旅行家的预算

题目描述
一个旅行家想驾驶汽车以最少的费用从一个城市 到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P 和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的 地,则输出“No Solution”。
输入
第一行为4个实数D1、C、D2、P与一个非负整数N;
接下来N行,每行两个实数Di、Pi。
输出
如果可以到达目的地,输出一个实数(四舍五入至小数点后两位),表示最小费用;否则输出“No Solution”(不含引号)。
样例输入
275.6 11.9 27.4 2.8 2
102.0 2.9
220.0 2.2
样例输出
26.95

思考

此题可用贪心算法,
通过找出当前最适合的油站加油得出结果,
我觉得难点主要是需要考虑车的最长行驶距离与油价做权衡,即
即使当前油站的价格低于后续油站的价格但是由于行驶距离限制因此不得不加油,需要将价格较低的油加满到贵的油站时再做判断;

#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;int main()
{float D1, C, D2, P, N;float Ds[1000][2];float minMoney = 0;cin >> D1 >> C >> D2 >> P >> N;Ds[0][0] = 0;Ds[0][1] = P;int i;for (i = 1; i <= N; i++){cin >> Ds[i][0] >> Ds[i][1];}Ds[i][0] = D1;Ds[i][1] = 0;float NowP = P;float NowD = 0;int Flag_N = 0;bool isAble = true;for (int i = 1; i <= N + 1; i++){if (Ds[i][0] - Ds[i-1][0] > (C * D2)){cout << "No Solution";isAble = false;break;}if (Ds[i][0] - Ds[Flag_N][0] > ((C * D2))){NowD = Ds[Flag_N][0] + (C * D2);minMoney += C * NowP;NowP = Ds[i - 1][1];Flag_N = i - 1;if (NowP > Ds[i][1]){minMoney += ((Ds[i][0] - NowD) / D2) * NowP;NowD = Ds[i][0];NowP = Ds[i][1];Flag_N = i;}}else if(NowP > Ds[i][1]){minMoney += ((Ds[i][0] - NowD) / D2) * NowP;NowD = Ds[i][0];NowP = Ds[i][1];Flag_N = i;}}if (isAble){cout << fixed << setprecision(2) << minMoney;}return 0;
}

蓝桥杯题目练习(旅行家的预算)相关推荐

  1. 蓝桥杯 算法训练 旅行家的预算

    问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...

  2. 蓝桥杯题目:九宫幻方(C++实现)(DFC)(打卡1)

    题目: 问题描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶 ...

  3. 蓝桥杯题目——带分数

    文章目录 前言 解题思路 全排列方法 递归实现 循环实现 组合数方法 循环实现 递归实现 浮点转整型思想 前言 本文介绍蓝桥杯题目--带分数,并且对其中包含的方法与思想进行总结,本文是上半部分. 参考 ...

  4. 蓝桥杯题目练习 提升篇 [蓝桥杯2019初赛]迷宫

    [蓝桥杯2019初赛]迷宫 题目描述 下图给出了一个迷宫的平面图,其中标记为1 的为障碍,标记为0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为左上角, ...

  5. 蓝桥杯-题目:猜算式

    题目:猜算式 你一定还记得小学学习过的乘法计算过程,比如: 273 x 15 ------ 1365 273 ------ 4095 请你观察如下的乘法算式 *** x *** -------- ** ...

  6. 2013年蓝桥杯题目与解答

    1. 题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天 ...

  7. 蓝桥杯题目练习(JAM计数法)

    算法训练VIP JAM计数法 题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的 ...

  8. 蓝桥杯题目 2682: 蓝桥杯2022年第十三届省赛真题-GCD

    题目描述 给定两个不同的正整数 a, b,求一个正整数 k 使得 gcd(a + k, b + k) 尽可能大,其中 gcd(a, b) 表示 a 和 b 的最大公约数,如果存在多个 k,请输出所有满 ...

  9. 蓝桥杯题目讲解(下)

    1.定义二维数组int a[5][6],则该二维数组可存储()个数组元素. A.20 B.25 C.30 D.16 这道题考察二维数组的知识,5 * 6 = 30,所以答案是C,(以前我有写过关于二维 ...

最新文章

  1. 【最全干货】从SGD到NadaMax,十种机器学习优化算法原理及实现
  2. 基于SAAS模式的报销管理系统!
  3. 网络攻击与防御技术第三次实验
  4. PMcaff活动 | 汪培公:农村电商模式的重新思考
  5. 利用FluidMoveBehavior制作出手机通讯录平滑的效果
  6. HDU 1243 最长公共子序列 动态规划
  7. DFS(入门题,走迷宫)
  8. GAE 随机获取实体
  9. Android之moveTaskToBack()方法实现手动隐藏当前Activity
  10. [html] 如何动态修改`<title>`的标题名称?
  11. linux查看nec进程状态,【linux】 /proc/PID/stat
  12. java利用栈求复杂表达式_java中的栈Stack的基本使用和应用(二) ——利用栈计算合法的算术表达,中缀表达式转后缀表达式...
  13. 谈谈JS的全局变量跟局部变量
  14. 单片机之汇编语言和C语言(以PIC单片机为例)
  15. 计算机网络研究方向和网络安全问题
  16. 【正点原子Linux连载】第七十一章 Linux 4G通信实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  17. php float 取整,php float 转 int 的问题
  18. [agc013d] Pilling Up
  19. 恢复服务器删除文件,恢复服务器删除文件夹
  20. 那些ftp服务器支持断点续传,ftp服务器 断点续传

热门文章

  1. WIN7下使用超级终端
  2. 值得收藏的152条民间小偏方
  3. Pixi的基本使用(5)--寻宝猎人
  4. 能上QQ但打不开网页
  5. POJ 1845 【数论】
  6. 一种基于模板匹配的图像配准方法
  7. [caffe学习笔记]用自己的数据进行训练和测试
  8. Broadcasts在Android7.0以及Android8.0中的变更
  9. 倍频程频谱_倍频程科学编程语言速成课程
  10. 服务器c盘清理文件,云服务器c盘满了怎么清理