参考:https://blog.csdn.net/daoqin121/article/details/39321481

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

一辆重型卡车预穿过长度大于1000公里小于1500公里的沙漠,卡车耗油为1升/公里,卡车总载油能力为500升。显然卡车装一次油是过不了沙漠的,因此司机必须设法在沿途建立几个储油点,使卡车能顺利穿越沙漠,试问司机如何建立这些储油点?每一个储油点应存多少汽油,才能使卡车以消耗最少汽油的代价通过沙漠? 请通过编程技术及 打印储油点的序号,各储油点距离沙漠始点的距离以及储油点的储油量.

输入输出格式

输入描述:

预穿过沙漠的长度公里整数Dis(大于1000公里小于1500公里).当输入0时程序结束.

输出描述:

储油点序号 起始点到储油点的长度 储油点的储油量 ,这三个变量在一行中输出,每两个数据中有两个空格.并且这三个数据占一行.

输入输出样例

输入样例#:

1000
1100
0

输出样例#:

1  25  3500
2  63  3000
3  108  2500
4  163  2000
5  234  1500
6  334  1000
7  500  500
1  14  5500
2  37  5000
3  63  4500
4  92  4000
5  125  3500
6  163  3000
7  208  2500
8  263  2000
9  334  1500
10  434  1000
11  600  500

题意分析:

首先明确一点:储油点的油都是卡车自己从起点一个个运过来的,即:卡车首先从起点跑若干趟将油运到第一个储油点,然后依次跑若干趟将油运往下一个储油点,最后距离终点500km时即可跑一趟就能到达终点

所以,从后往前分析,将距离终点最近的一个储油点设为第一个点,与终点的距离用数组dis存储,储油量用数组oil存储,dis[1] = 500, oil[1] = 500

由于卡车最大储油量为500L,所以(相较于起点而言的)前一个站点应该比后一个站点多500L油,这500L是用于两个站点之间的路程消耗

所以得出递推式:dis[i+1] = dis[i] + 500 / (2*i + 1), oil[i+1] = oil[i] + 500

最后输出的时候要记得将总路程减去dis之后逆向输出

代码:

#include<iostream>
using namespace std;
int main()
{int dis[100];int oil[100];dis[0] = oil[0] = 0;dis[1] = oil[1] = 500;int i, j;for (i = 1; dis[i] <= 1500; i++) {dis[i+1] = dis[i] + 500 / (2*i + 1);oil[i+1] = oil[i] + 500;}while (1) {int sum;cin >> sum;if (sum == 0)break;for (j = i-1; j > 0 && dis[j] > sum; j--);for (int k = 1; j > 0; k++, j--) {cout << k << "  " << sum - dis[j] << "  " << oil[j] << endl;}}return 0;
}

1056 沙漠储油点相关推荐

  1. 汽车穿越沙漠的算法问题(反推法)

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

  2. FZU 1076 穿越沙漠(逆推建模)(数学)

    穿越沙漠 Problem Description 一辆吉普车来到x公里宽的沙漠边沿A点,吉普车的耗油量为1升/公里,总装油量为500升.通常,吉普车必须用自身油箱中的油在沙漠中设置若干个临时储油点,才 ...

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

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

  4. 递推法:穿越沙漠问题

    吉普车试图穿越 x km 宽的沙漠,吉普车耗油率1L/km,总装油量 500L,对于 x > 500,吉普车需要设置临时储油点,以穿越沙漠.现在,我们需要对于输入的 x 值,计算最少的耗油量.其 ...

  5. java卡车过沙漠问题_汽车最少油耗穿越沙漠问题(Java源码)

    例题: 一辆吉普车穿越1000km的沙漠,吉普车的总装油量为500加仑,耗油率为1加仑/km.由于沙漠中没有油库,必须先使用这辆车在沙漠中建立临时的油库(起点处吉普车满油).若吉普车用最少的耗油量穿越 ...

  6. 汽车穿越沙漠的算法问题【python】

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

  7. 汽车最少油耗穿越沙漠问题(Java源码)

    例题: 一辆吉普车穿越1000km的沙漠,吉普车的总装油量为500加仑,耗油率为1加仑/km.由于沙漠中没有油库,必须先使用这辆车在沙漠中建立临时的油库(起点处吉普车满油).若吉普车用最少的耗油量穿越 ...

  8. 迭代算法集锦(倒推法)

    求解步骤 1.确定迭代模型 2.建立迭代关系式 3.控制迭代过程 今天我们来用几个简单的例子来了解倒推法 倒推法 1.猴子吃桃 题目描述: 猴子第一天采摘了一些桃子, 第二天吃了第一天的一半多一个, ...

  9. 《信息学竞赛指导》参考答案

    <信息学竞赛指导>参考答案 第一章              信息技术基础 第一节      计算机与信息社会 选择题: 1.B    2.C   3.D   4.B  5.B  6.D  ...

最新文章

  1. closeable java_【转】java.io.Closeable接口
  2. cli3暴露api地址 vue_手把手教你开发 Vue 组件库
  3. 【1】青龙面板入门系列教程之服务器的选择及初始化
  4. python绘制3d图-python3利用Axes3D库画3D模型图
  5. 7种方法帮助企业改进软件维护效率
  6. 第五节: EF高级属性(一) 之 本地缓存、立即加载、延迟加载(不含导航属性)
  7. Linux 如何查看文件夹的大小(du、df、ls、find)
  8. 简单!Python+OpenCV三步去除水印
  9. jd-gui反编译中文乱码
  10. matlab 变限积分计算,Matlab变限积分计算【方法教程】
  11. 牛客java选择题每日打卡Day9
  12. 先进级!阿里云大数据+AI平台通过信通院数据平台整体解决方案最高等级评测
  13. Android 投影MAC,Vysor pro 破解
  14. Unity笔记之调节text的字间距
  15. 限流Throttling
  16. html前端使用高德地图入门教程,并在地图上标记位置
  17. [BUU刷题记录]day01-起步
  18. html 页面右侧浮窗 CSS,CSS实现广告右侧悬浮效果
  19. 数据库系统概论 实验报告答案 实验二:创建及管理数据表
  20. 机器学习基础——生成模型和判别模型

热门文章

  1. DHCP协议实例化分析
  2. linux编译wifi驱动RTL8188EUS模块 AP模式
  3. 全球及中国酸性饮料行业研究及十四五规划分析报告
  4. 移动硬盘连上Mac不能存入文件的解决方法
  5. 微信小程序实现分享里调用接口
  6. 集成学习-非成对多样性度量-个人总结
  7. 高级按摩椅-市场现状及未来发展趋势
  8. Bootstrap模块dropdown实现下拉框响应的事件
  9. 有哪些好用的远程办公软件
  10. arima 公式_时间序列 ARIMA 模型 (三)