穿越沙漠

Problem Description

一辆吉普车来到x公里宽的沙漠边沿A点,吉普车的耗油量为1升/公里,总装油量为500升。通常,吉普车必须用自身油箱中的油在沙漠中设置若干个临时储油点,才能穿越沙漠的。假设在沙漠边沿A点有充足的汽油可供使用,那么吉普车从A点穿过这片沙漠到达终点B,至少要耗多少升油。请编写一个程序,计算最少的耗油量(精确到小数点后3位)。
(1)假设吉普车在沙漠中行进时不发生故障;
(2)吉普车在沙漠边沿A点到终点B的直线距离为x≧500公里(即沙漠宽度);
Input

输入的第一行含一个正整数k (1<=k<=6),表示测试例的个数。后面紧接着k行,每行对应一个测试例,包含一个正整数x,表示从A点到B点的距离(1<=x<=2000)。
Output

每个测试例对应一行输出,包含一个数,表示最少的油耗量。
Sample Input

2
500
1000
Sample Output

500.000
3836.497

ps:真是一件很费脑力的好题啊,看题解都看了大半天0.0


分析:
按照第二个样例,起点到终点为1000km
我们逆着来,从终点开始考虑,
也就是从终点到起点中间的加油站分别为
l0(终点)…….l1…….l2……ln…

首先我们考虑是从I1到I0需要的油是500公升,也就是我们在I1的位置存放500公升的汽油才能保证车子到终点。

我们把两个I之间的距离写为S[i],耗油量为V[i]
则S1=500公里,V1=500公升

然后我们计算从l2到l1,很明显我们至少要从l2(l2->l1单向)开两趟车子才能在l1处储存500公升,那来回(两去一回)都计算上的话应该是至少3趟才行
能保证3次往返最低的总耗油量就是500公升(这一点很关键)
那么也就是说l2到l1之间的距离S2=500/3,l2到l0的距离是S1+S2=500+500/3
而同时在I2处的储存油量为:V2=500公升+500公升=1000公升

继续向下考虑,从I2到I3。要保证l2处有1000公升的汽油,我们必须要卡车最少从I3向I2开3趟(l3->l2单向),来回最少就是5趟。路上的总耗油量还是500公升,
那么l3到l2之间的距离S3=500/5,l3到l0的距离是S1+S2+S3=500+500/3+500/5
同时l3处的储存油量:V3=1500公升

由此推断:
如果i处需要储存油,那么就需要i*500的储存量。
车子从i+1处到i处(单向)至少要i次,往返总共是2*i-1次。
而这2*i-1次的最小总耗油量是500公升。
那么i+1与i之间的距离就是500/(2*i-1)。

假设A点到B点的距离为x,
最后i=n到开始点的距离是x-(S1+S2+S3+……+Sn)(也就是前面的总路程)
储油量:n*500

车子至少要从起点开n+1次满油到n处。加上返回的,一共是2n+1次。
而我们2n+1次的耗油量是(x-(S1+S2+S3+……+Sn))*(2n+1)

所以,起点的油量就是Vn+(x-(S1+S2+S3+……+Sn))*(2n+1)
Vn就是从ln点到终点总的需求油量


以上就是全部的分析过程了0.0

代码:

#include<stdio.h>int main()
{int t;scanf("%d",&t);while(t--){double x;scanf("%lf",&x);if(x<=500)printf("%.3lf\n",x);else{int cnt=0;while(x>0){cnt++;x-=500*1.0/(2*cnt-1);}double ans=500*cnt*1.0+(2*cnt-1)*1.0*x;printf("%.3lf\n",ans);}}return 0;
}

FZU 1076 穿越沙漠(逆推建模)(数学)相关推荐

  1. 2020数学建模国赛(B)穿越沙漠

    2020年高教社杯全国大学生数学建模竞赛题目 (请先阅读"全国大学生数学建模竞赛论文格式规范") B题 穿越沙漠 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和 ...

  2. 2020年全国大学生数学建模竞赛B题穿越沙漠问题——建立整数线性规划模型(ILP)——通过LINGO求解

    2020年全国大学生数学建模竞赛B题 穿越沙漠 题目是讲玩家在不同地图下穿越沙漠,所获得的资金数要最多(大概是这个意思).然后通过文章的描述又总结了N个约束条件.整体的思路就是对资金最大化作为目标函数 ...

  3. 2020数学建模国赛B题穿越沙漠个人解析

    前言 博主发这篇文章的时候国赛早就结束了,仅仅是出于给自己留个纪念以及交流讨论的目的写的博客.所以如果你对我不在比赛那几天发的行为感到不满,请直接退出就好,我也没觉得自己的想法多么优秀,能够断言自己是 ...

  4. 2020年数学建模国赛B题穿越沙漠

    问题重述 问题一:在整个游戏时段内每天的天气状况都已知的情况下,给出一名玩家一般情况下的完成"第一关"和"第二关"的最优策略,并将相应结果分别填入Result. ...

  5. 2020年数学建模国赛B题“穿越沙漠”思路

    目录 原题 关键词 目标 问题一分析 问题二分析 问题三分析 比赛后的一些些感想 原题 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在 ...

  6. 2020年数学建模国赛B题:穿越沙漠

    B题 穿越沙漠 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的水和食物(包括食品和其他日常用品),从起点出发,在沙漠中行走.途中会遇到不同的天气,也可在矿山.村庄补充资金或资源,目标是 ...

  7. 2020全国大学生数学建模竞赛穿越沙漠第二问求解方法

    第二问的模型相比第一问的区别就是天气未知,在天气未知的情况下,决定行动策略.因为天气未知,所以最优的决策不一定能得到最好的结果,因此就需要在第二问未知的条件下设计决策说明自己方法的优越性,一次穿越的结 ...

  8. 2020年高教社建模国赛真题B题--穿越沙漠

    2020年高教社杯全国大学生数学建模竞赛题目 (请先阅读"全国大学生数学建模竞赛论文格式规范") B题   穿越沙漠 考虑如下的小游戏:玩家凭借一张地图,利用初始资金购买一定数量的 ...

  9. 算法 穿越沙漠问题(递推法)

    问题描述 一辆吉普车来到1000km宽的沙漠边沿.吉普车的耗油量为1L/km,总装油量为500L.显然,吉普车必须用自身油箱中的油在沙漠中设几个临时 加油点,否则是通不过沙漠的.假设在沙漠边沿有充足的 ...

最新文章

  1. go消息服务器吗,Go语言聊天服务器
  2. 【Prometheus + Grafana】 使用 topk 在 grafana 绘制 前 n 个时间序列
  3. LINQ to XML .Net 3.5 中的新XML对象
  4. GIT常用命令--拉取提交
  5. 硬币 假硬币 天平_小东西叫硬币
  6. SharePoint 2010新特性Ribbon
  7. Samba简单应用案例
  8. Angular自定义管道(过滤器)方法
  9. linux驱动系列之挂载(转)
  10. ZJ-在线取色器的使用(RGB值转HSV值)
  11. java word 文档合并_[原创]java合并word文件
  12. C语言图像分类算法,tuxiangfenleijulei 本算法基于C语言实现图像分类 - 下载 - 搜珍网...
  13. yabailv 运放_压摆率——限制了运放的速度
  14. IP地址 A\B\C类
  15. 心法利器[24] | 以pytorch为例看我怎么自学新技术的
  16. PS~了解PS的第一步,基本操作
  17. 《为你打开一扇门》| 赵丽宏
  18. SEO优化考核的七大指标
  19. 决策树算法_基本思想
  20. 科大讯飞(语音合成和语音听写)

热门文章

  1. 【pm笔记】产品中的需求层次——以音乐产品为例
  2. 快递查询方法,一键查询全部快递的物流信息
  3. 串口助手测试NB-IoT模块与华为OceanConnect平台通信(BC35-G模块、非常详细)
  4. Redis | 非常重要的中间件
  5. 在冒险中打拼:教师到手机大亨的打拼路
  6. 搜索引擎的概念鄂州_鄂州SEO优化-鄂州百度网站关键词推广矩阵系统-鄂州整站快速排名...
  7. 人工智能小白日记之2准备篇
  8. 干货丨速度教你创建网页文件,实现HTML入门
  9. 云客网:企业网站SEO优化方案实例
  10. java实现mysql还原_java代码实现mysql的备份与还原