Vijos 1253 旅行家的预算
题目链接:https://vijos.org/problems/P1253
描述
一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离d1、汽车油箱的容量c(以升为单位)、每升汽油能行驶的距离d2、出发点每升汽油价格p和沿途油站数n,油站i离出发点的距离d、每升汽油价格p。
计算结果四舍五入至小数点后两位。
如果无法到达目的地,则输出-1。
格式
输入格式
输入共n+1行,第一行为d1,c,d2,p,n,以下n行,每行两个数据,分别表示该油站距出发点的距离d和该油站每升汽油的价格p。两个数据之间用一个空格隔开。
输出格式
一行,输出最少费用。
计算结果四舍五入至小数点后两位。
如果无法到达目的地,则输出-1。
本题练习贪心算法。
分析:走到能走到之内的第一个价格比当前所在点便宜的加油站,如果之后能走到的所有站都比当前点贵 那么就加满油 走到能走到的最便宜的一个站。
如果在这个范围内存在一个加油站j,它的价格pri[j]<pri[i],那么只要把油加到刚好能到达j就可以了;如果在这个范围内不存在这样的加油站,那么就在i加满油,然后走到最便宜的加油站j,如果无法走到j,即最近的加油站dis[j]>dis[i]+c*d2,此时无解。
代码:
#include <stdio.h>
#include <stdlib.h>using namespace std;#define maxn 102double d[maxn];//距离
double c;//容量
double d2;//每升油能行驶的距离
double p[maxn];//汽油价格
int n;//加油站个数double cost;//花费
double rest;//油箱油量剩余int main()
{/*#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endif*/double d1;scanf("%lf %lf %lf %lf %d",&d1,&c,&d2,&p[0],&n);for(int i=1;i<=n;i++){scanf("%lf %lf",&d[i],&p[i]);}d[n+1] = d1;p[n+1] = 0;d[0] = 0;cost = 0;rest = 0;int k = 0;while(k<=n){int j = k;int flag = 0;int min = 0;double need = 0;//在k处需要加多少油while(d[j+1] - d[k] <= c * d2 && j<=n){j++;//最近的比当前加油站低的if(flag == 0 && p[j]<p[k]){flag = j;}//最便宜的站if(min == 0 || p[j]<p[min]){min = j;}}if(k == j){printf("-1\n");return 0;}//没有比当前加油站价格低的,加满,走到最便宜的一个站if(flag == 0){need = c - rest;cost += need * p[k];rest = c - (d[min] - d[k])/d2;k = min;}//最近的比当前加油站低的else{need = (d[flag] - d[k])/d2 - rest;if(need < 0){need = 0;}cost += need * p[k];rest = 0;k = flag;}}printf("%0.2lf\n",cost);return 0;
}
Vijos 1253 旅行家的预算相关推荐
- vijos:旅行家的预算[贪心]
题目 Problem description 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶 ...
- java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法
洛谷 P1016 旅行家的预算 Java解法 洛谷 P1016 旅行家的预算 Java解法 package com.two; import java.util.Scanner; public clas ...
- 贪心算法解旅行家的预算问题
贪心算法解旅行家的预算问题 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2 ...
- noip1999 旅行家的预算 (贪心)
A1122. 旅行家的预算 时间限制:1.0s 内存限制:256.0MB 总提交次数:854 AC次数:169 平均分:54.45 将本题分享到: 查看未格式化的试题 ...
- 蓝桥杯:旅行家的预算 贪心解法
蓝桥杯:旅行家的预算 贪心解法 问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距 ...
- 蓝桥杯题目练习(旅行家的预算)
算法训练VIP 旅行家的预算 原题链接:旅行家的预算 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市 到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单 ...
- 贪心算法——旅行家的预算(NOIP1999)
问题描述: 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和 ...
- 旅行家的预算(贪心)
旅行家的预算 来源: 1999年NOIP全国联赛普及组NOIP全国联赛提高组 题目描述: 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽 ...
- #NOIP1999#旅行家的预算
旅行家的预算 时间限制: 1 Sec 内存限制: 64 MB 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C( ...
最新文章
- Delphi开发步骤经验谈(C++亦实用)
- 用拦截器+注解+cookie进行简单限流访问案例
- .net 调用url接口_.NetCore中Quartz.NET的依赖注入
- 怎样才能去掉图片锁定纵横比_1分钟批量统一Word中300张图片的大小!无需插件、代码,超级简单...
- (kruskal)Jungle Roads
- unity 查找所以物体_用Unity来实现一下绳子效果——Obi Rope插件介绍
- html5与其他语言的优势,浅谈:html5和html的区别
- 查找指定时间段内的文件
- H264--H264解码--5
- 5.1 Lilypond五线谱
- 工具--nssm详解
- html5标题居中怎么设置,标题居中怎么设置
- MyBatisPuls入门案例
- python创建时间序列_python 时间序列
- 信创办公--基于WPS的Word最佳实践系列(汇总目录)
- UNIX网络编程:卷2-读书笔记
- 爬瓜子二手车(json接口)
- pgn model和一些解决oov的方法
- FMCW雷达测距技术最强最全解析
- 英语背单词有用吗_考研英语刷真题+背单词真的有用吗?83分上岸学姐用经验告诉你...