hznu 1628: 旅行家的预算(贪心,分类)

加油问题贪心算法求解 一个旅行家想驾驶汽车从城市A到城市B(设出发时油箱是空的)。给定两个城市之间的距离dis、汽车油箱的容量c、每升汽油能行驶的距离d、沿途油站数n、油站i离出发点的距离d[i]以及该站每升汽油的价格p[i],i=1,2,…,n。设d[1]=0<d[2]<…<d[n]。要花最少的油费从城市A到城市B,在每个加油站应加多少油,最少花费为多少? 立即下载

 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。

输入

 第一行是五个数依次为:D1  C  D2  P  N

接下来有N行,每行包含两个数Di和Pi。

(其中只有N是正整数,其余均为正实数。C和N小于100,其余输入均小于1000。)

输出

最少费用。

样例输入

275.6 11.9 27.4 2.8 2
102.0 2.9
220.0 2.2

样例输出

26.95
http://hsacm.cn/JudgeOnline/problem.php?id=1628

更详细的题解:http://neik.blog.163.com/blog/static/747032102008614113125748/

#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<cmath>
#include<queue>
#include<stdlib.h>
#include<map>
#include<vector>
#include<cstdio>
#define ll long long
using namespace std;
struct node{
	double dis,cost;
}x[101];
int main(){  
	double d1,c,d2;
	int n;
	x[0].dis=0;
	cin>>d1>>c>>d2>>x[0].cost>>n;
	for(int i=1;i<=n;++i)
		cin>>x[i].dis>>x[i].cost;
	x[n+1].dis=d1;//将终点也看作一个加油站,并将终点站的油价赋为0
	x[n+1].cost=0;
	for(int i=1;i<=n+1;++i){
		if(x[i].dis-x[i-1].dis>c*d2){  //相邻加油站的距离>最大行驶距离
			cout<<"No Solution"<<endl;
			return 0;
		}
	}
	double sum=0; //总花费
	double w=0;  //目前油箱中油的体积
	int i=0,p;
	while(i<=n){
		for(int j=i+1;j<=n+1;++j){
			if(x[j].cost<x[i].cost){//找到下一个油价比当前站油价低的加油站p
				p=j;
				break;
			}
		}
		if(x[p].dis-x[i].dis>c*d2){//如果不能到达,在当前站加满油,行驶到下一个加油站
			sum+=(c-w)*x[i].cost;
			w=c-(x[i+1].dis-x[i].dis)/d2;
			i++;
		}
		else if(w*d2>=x[p].dis-x[i].dis){//如果用目前车上的油能到达p站,直接到p站
			w-=(x[p].dis-x[i].dis)/d2;
			i=p;
		}
		else{ //如果用目前车上的不油能到达p站,则在当前站加油使汽车刚好能到达p站
			sum+=((x[p].dis-x[i].dis)/d2-w)*x[i].cost;
			w=0;
			i=p;
		}
	}
	printf("%.2lf",sum);
    return 0;  
}  

算法 旅行家问题 带图形功能 旅行家问题,带有图形功能,对算法,数据结构,vc++,计算机图形学的学习都有很大的帮助。 立即下载

相关推荐

MTK-AWB 小结 (二)

调试总结:可以将offset 对应的ratio加大,保留更多的喜好色(偏色),影响WF statistic gain,从而影响最终的awb gain。这一部分前期CCT校准的时候就会算出一组默认值,当然这个offset offse 值用于优化T,S,wf 光下的偏色喜好度. offset。后面遇到 A H Shad 光收白或者偏色,还可以优化 A 的offset ,H offset,shad offset.new offset 计算过程(Day locus offset 和M/G offset )

qq_46056347的博客 1168

【蓝桥杯】 算法训练 旅行家的预算

问题描述   一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1D1D1、汽车油箱的容量CCC(以升为单位)、每升汽油能行驶的距离D2D2D2、出发点每升汽油价格PPP和沿途油站数NNN(NNN可以为零),油站i离出发点的距离DiDiDi、每升汽油价格PiPiPi(i=1,2,……Ni=1,2,……Ni=1,2,……N)。计算结果四舍五入至...

小二笙的博客 1347

CCS安装教程图解说明:可视化步骤快速上手

通过清晰的图解步骤详解CCS安装过程,帮助新手快速掌握环境搭建。结合ccs安装教程与实际操作界面,每一步都直观易懂,大幅降低学习门槛,提升配置效率。

weixin_42611310的博客 963

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

问题描述  一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。输入格式  第一行为...

TOBEALISTENNER的博客 541

RK3588开发笔记-5G模块(SIM8200、广和通FM160、移远RM500U)调试笔记

RK3588 CPU提供了丰富的外设接口,本文主要介绍通过usb3.0接口驱动5G模块来实现5g无线数据传输功能。在物联网和边缘计算领域,5G网络支持的高速率、低延时连接为应用带来了更多可能性。RK3588作为一款高性能SoC,适合用于5G联网应用。SIM8200广和通FM160和移远RM500U。在RK3588上调试5G模块可以为设备提供稳定的高速联网能力。本文介绍了如何配置和调试SIM8200、广和通FM160和移远RM500U模块,通过AT指令和QMI/MBIM工具实现5G数据连接。

flypig has a dream! 2670

扣子Coze工作流教程:采集公众号爆文,一键仿写自动发布

通过本教程,你学会了如何利用扣子(Coze)平台构建一个完整的公众号文章自动处理工作流。这个系统不仅能够大幅提升内容产出效率,还能通过AI二创保持内容新鲜度和原创性。最佳实践建议:初次使用时,建议先保存为草稿而不是直接发布,以便人工审核;从简单的工作流开始,逐步增加复杂度;定期检查工作流运行日志,优化节点配置。自动化内容创作是新媒体运营的未来趋势,掌握这项技能将使你在数字内容领域占据显著优势。

互联网架构师笔记 1238

蓝桥杯训练——旅行家预算(贪心算法)

旅行家预算 贪心算法 蓝桥杯

xushuo的博客 1342

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性和易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理和线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 481

旅行家的预算

题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。 输入输出格式

Brute♂force 1085

YOLOv11改进 | 损失函数改进篇 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

这篇文章介绍了YOLOv11的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Focus”思想,创造了一系列新的损失函数。这些组合形式的损失函数超过了二十余种,每种都针对特定的目标检测挑战进行优化。文章会详细探讨这些损失函数如何提高YOLOv11在各种检测任务中的性能,包括提升精度、加快收敛速度和增强模型对复杂场景的适应性。

Snu77的博客 6195

刷爆 Java 基础!1000 道经典面试题精解第一篇【序列化】

自定义序列化 / 反序列化的实现方式在实现接口的类中,手动重写和方法在方法内优先调用执行默认序列化逻辑;追加自定义逻辑(如敏感数据加密、临时字段赋值、兼容旧版本数据等)。// 序列化ID,保证兼容性// 敏感字段,默认不序列化,自定义处理// 自定义序列化// 执行默认序列化:写入username// 自定义逻辑:密码加密后写入// 自定义反序列化// 执行默认反序列化:读取username// 自定义逻辑:读取加密密码并解密// 模拟加密/解密工具方法。

七叔的博客 192

java 旅行家的预算_洛谷 P1016 旅行家的预算 Java解法

洛谷 P1016 旅行家的预算 Java解法洛谷 P1016 旅行家的预算 Java解法package com.two;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double D1 = sc.nextD...

weixin_39595621的博客 259

2025华为OD 面试手撕代码真题【字符串至多删除一个字符,是否能构成回文串】

2025华为OD 面试手撕代码真题【字符串至多删除一个字符,是否能构成回文串】

MISAYAONE的博客 1707

旅行家的预算(NOIP1999&水题测试2017082301)

NOIP1999提高组&水题测试2017082301

cggwz的信息飞船 602

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

(详解)旅行家的预算(JAVA实现)蓝桥杯 算法训练 ALGO-15 旅行家的预算

问题描述   一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。 输入格式   ...

Demonslzh的博客 1381

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

noip--旅行家的预算

1916: 【贪心】旅行家的预算时间限制: 1 Sec  内存限制: 128 MB提交: 49  解决: 11[提交][状态][讨论版]题目描述一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格P...

sher杨的博客 693

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

洛谷 P1016 旅行家的预算 Java解法

package com.two; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double D1 = sc.nextDouble();// 两个城市之间的距离 double C = sc.nextDouble();// 汽车油箱中油的容量 double D2 = sc.nextDoubl.

青柠小甜味 326

蓝桥杯算法训练VIP-旅行家的预算

题目 题目链接 题解 贪心。 贪心思路: 以下所说的加油站忽略最后一个,即忽略终点,终点用于特殊判断。 从能能到达的加油站中选一个油价最低的加油站进行判断: 若没有能到达的加油站: 无法到达终点,则直接No Solution; 可以到达终点,则直接到达终点。 若有能到达的加油站: 若这个加油站的油价比当前的加油站油价低,则选择这个加油站作为目的地,油量加到刚好能到达找到的加油站即可; 若这个加油站的油价比当前的加油站油价高,则判断是否能直接到达终点:

LJR的博客 463

蓝桥杯 旅行家的预算 By Assassin [复杂的贪心]

问题描述   一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。 输入格式   第一

Assassin 1916

算法训练 旅行家的预算

问题描述   一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。 输入

horizon_zore的博客 9223

旅行家的预算 --- 贪心

传送门 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离 D1D1 、汽车油箱的容量 CC (以升为单位)、每升汽油能行驶的距离 D2D2 、出发点每升汽油价格 PP 和沿途油站数 NN ( NN 可以为零),油站 ii 离出发点的距离 DiDi 、每升汽油价格 PiPi ( i=1,2,…,Ni=1,2,…,N )。计算结果...

笑面蘑菇的博客 903

#NOIP1999#旅行家的预算

旅行家的预算 时间限制:1 Sec内存限制:64 MB 题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(0<=N<=100),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,……N)。计算结果四舍五入至...

ElaineZXY的博客 1622

贪心——洛谷P1016 旅行家的预算

https://www.luogu.org/problem/show?pid=1016 1、先判断下一个目的地,再计算油费和加的油 2、如果当前已经在最后一个加油站并且加满油仍然走不到终点则输出No Solution 3、每次在可以走到的范围内找油费最小的加油站 2.1如果该加油站的油费当前所在地点的油费要便宜,就加恰好能开到该加油站的油 2.2...

weixin_30787531的博客 263
上一篇: hznu 1164 Unidirectional TSP(记录状态的DP)
下一篇: hznu 1139: Minimax Triangulation(dp,三角形面积模板)
ccyy-
博客等级 码龄12年 31粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值