Time Limit: 1 second

Memory Limit: 2 MB

问题描述

一辆重型卡车欲穿过1000公里的沙漠,卡车耗油为1升/公里,卡车总载油能力为500公升。显然卡车装

一次油是过不了沙漠的。因此司机必须设法在沿途建立几个贮油点,使卡车能顺利穿越沙漠,试问

司机如何建立这些贮油点?每一贮油点应存多少汽油,才能使卡车以消耗最少汽油的代价通过沙漠?

编程计算及打印建立的贮油点序号,各贮油点距沙漠边沿出发的距离以及存油量。

No. distance(k.m.) oil(litre)

1 ×× ××

2 ×× ××

3 ×× ××



Input

Output

Sample Input

Sample Output

输出的距离和油量两部分场宽20,保留小数点后10位

No. Distance oil

0 0.0000000000 3836.4968364968

1 22.4331224331 3500.0000000000

2 60.8946608947 3000.0000000000

3 106.3492063492 2500.0000000000

4 161.9047619048 2000.0000000000

5 233.3333333333 1500.0000000000

6 333.3333333333 1000.0000000000

7 500.0000000000 500.0000000000

8 1000.0000000000 0.0000000000

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=a302

【题解】



从倒数第二个贮油点考虑;

因为我们从样例已经知道了d[8]=500,oil[8]=500;

这就表示我们到达这第8个贮油点的时候,刚好油耗完了;然后第8个点刚好有500L的油,则再加上去就可以在终点处耗完所有的油且到达终点了;(严格意义来说是,我们到第8个贮油点的时候,车上还有油,但不是恰好500L,要加上第8个贮油点的油才是500L,这个情况可以看成是我们把车上剩余的油全部倒在第8个贮油点,然后第8个贮油点就为500L的油了,然后再把500L的油加到车上。。。没错就是这样,我不是在卖萌、)

那么我们在第7个贮油点要多少油呢?显然我们得让贮油点7的储油量大于500;因为我们在第7和第8个贮油点之间来回走的时候就已经耗掉一点油了,恰好500升是肯定不够的;再考虑一下来回走的过程;则我们肯定最少要1000升的油;



如图所示,我们从第7个点满载两次出去到第8个点,然后再空载一次回来(红线);

显然。我们在1000升油中有500升是要放在第8个点的;

则另外500升就是在路途中消耗掉的;即从7->8然后从8->7再从7->8;也即3*s;

这样3*s=500升;则s=500/3;

这样我们就确定了贮油点7到贮油点8的距离;

可以想见;其实我们不一定要1000升的汽油放在贮油点7;

实际上800升也可以;

那样有500升是运到了贮油点8;则300升用于路上的消耗;

则3*s=300;则s=100;但是这样并不利于后面的递推;所以我们取个整数500;即第7个贮油点放1000升的油;

我再模拟下第6个点到第7个点的过程;

因为第7个点要1000升的油:

所以第6个点我们就假设要1500升的油;

还是一样;



我们因为路上会有损耗,所以不可能只在第6个点贮1000升的油;

选择1500是一个合理的数字;

则我们要往第7个点运3次油;如上图;

可以看到一共有5个箭头;则这5个箭头是在路上消耗掉的油;

则5*s=(1500-1000)则s=100;

所以第6个贮油点和第7个贮油点之间的距离为100km;



以此类推;

我们到了起点前的一个点d[1]的时候;

通过样例看到距离起点d[1]= 22.4331224331;oil[1]=3500;

则要从起点0运3500升的油在1号点贮存,需要在0号节点放多余3500升的油才行。

那么要多少油呢;

显然3500升;运7次是不够的;因为路上会有损耗;则需要运八次;

如下图;



则耗损的油量为d[1]*15==336.4968364968

然后再加上需要放在1号点的3500升油;

咋1号点需要放3836.4968364968油;

(每次从0到1后,只留回来的油量,剩余的全都放在1号贮油点;当然最后一次(即第8次从0到1的时候,就不用再放下油了,此时车上的油加上1号贮油点在前7次存下的油量恰好为3500,也就是说第8次到1号贮油点的时候1号贮油点还不是3500升油,要加上车上剩余的油才是3500升);



【完整代码】

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#include <stack>
#include <string>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second typedef pair<int,int> pii;
typedef pair<LL,LL> pll; void rel(LL &r)
{
r = 0;
char t = getchar();
while (!isdigit(t) && t!='-') t = getchar();
LL sign = 1;
if (t == '-')sign = -1;
while (!isdigit(t)) t = getchar();
while (isdigit(t)) r = r * 10 + t - '0', t = getchar();
r = r*sign;
} void rei(int &r)
{
r = 0;
char t = getchar();
while (!isdigit(t)&&t!='-') t = getchar();
int sign = 1;
if (t == '-')sign = -1;
while (!isdigit(t)) t = getchar();
while (isdigit(t)) r = r * 10 + t - '0', t = getchar();
r = r*sign;
} const int MAXN = 20;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
double d[MAXN];
double oil[MAXN]; int main()
{
//freopen("F:\\rush.txt","r",stdin);
d[1] = 1000;oil[1] = 0;
d[2] = 500;oil[2] = 500;
int i=2;
double now = 500.0;
while (true)
{
oil[i+1] = oil[i]+500;
double dis = 2*i-1;
dis = 500.0/dis;
if (now-dis<0)
break;
i++;
now-=dis;
d[i] = now;
}
double dis = 2*i-1;
i++;
d[i] = 0;oil[i] = oil[i-1]+dis*now;
puts("No. Distance oil");
rep2(j,i,1)
printf("%d%20.10lf%20.10lf\n",i-j,d[j],oil[j]);
return 0;
}

【a302】&&【9306】贮油点问题的更多相关文章

  1. 贮油点问题(C++)

    贮油点问题…..一道送命系列的递推… 描述 Description 一辆重型卡车欲穿过S公里的沙漠,卡车耗汽油为1升/公里,卡车总载油能力为W公升.显然卡车装一次油是过不了沙漠的.因此司机必须设法在沿 ...

  2. c语言-递推算法1

    递推算法之一:倒推法 1.一般分析思路: if 求解初始条件F1 then begin { 倒推 } 由题意(或递推关系)确定最终结果Fn; 求出倒推关系式Fi-1 =G(Fi ); i=n; { 从 ...

  3. 一些最常见的SNMP的OID自动翻译成zabbix数字进行表示(华为9306)

    转载自:https://blog.51cto.com/davidbj/1173954 随着Zabbix 2.0版本的发布,很多企业开始用zabbix来代替之前的Nagio.Cacti等其它监控软件.至 ...

  4. Dell XPS 13 9306安装 macOS 10.12.6

    一直在考虑买一个手上的本,轻薄,办公方便.个人很喜欢mac 下的那些软件,尤其是keynote.就锁定在Macbook Pro上,但是又觉得没有什么玩头,后来一直找,觉得xps也很符合要求,就开始调查 ...

  5. 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)

    你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...

  6. 详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎

    最近业务上有要求,要实现类似oracle 的dblink   linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/ ...

  7. [MySQL Reference Manual]15. 其他存储引擎

    15. 其他存储引擎 15. 其他存储引擎 15.1 设置存储引擎 15.2 MyISAM存储引擎 15.2.1 MyISAM启动选项 15.2.2 Key的空间要求 15.2.3 MyISAM表存储 ...

  8. utf-8 汉字对照表

    之前从redis中取出一些数据,utf8 16进制编码,想转成字符,没有找到现成的转化工具,先用这个表直接查找对照吧. UTF8编码表大全Code code# Code (coded in UTF-8 ...

  9. ActiveMQ

    前言 MQ--Message Queue,中文翻译为"消息队列",维基百科上的这样描述: 消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方 ...

随机推荐

  1. 【Codeforces Round #445 (Div. 2) D】Restoration of string

    [链接] 我是链接,点我呀:) [题意] 给你n个字符串. 让你构造一个字符串s. 使得这n个字符串. 每个字符串都是s的子串. 且都是出现次数最多的子串. 要求s的长度最短,且s的字典序最小. [题 ...

  2. 辛星彻底帮您解决CSS中的浮动问题

    浮动,是CSS布局中必须经过的一道坎,假设不熟悉浮动.那么CSS的布局就如同空中楼阁,而谈到浮动,很多其它的是和div相结合,div是一个块级元素.这个我前面的博文有介绍,假设大家喜欢我的风格,能够搜 ...

  3. 微信浏览器跳转外部浏览器 app下载

    这个是摘抄的,具体抄的哪里我忘记了,作为记录 2019年5月14日 现在这个好像也不好用了,微信又提示建议下载qq浏览器什么的,显示一个红色感叹号,让用户产生怀疑,很鄙视tx error_report ...

  4. 【Codeforces Round #437 (Div. 2) C】 Ordering Pizza

    [链接]h在这里写链接 [题意]     给你参赛者的数量以及一个整数S表示每块披萨的片数.     每个参数者有3个参数,si,ai,bi;     表示第i个参赛者它要吃的披萨的片数,以及吃一片第 ...

  5. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  6. 黑马程序猿——15,String,StringBuffer,基本数据类型包装对象

    ------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...

  7. Facebook Hacker Cup 2015 Round 1--Winning at Sports(动态规划)

    原题:pid=688426044611322&round=344496159068801">https://www.facebook.com/hackercup/problem ...

  8. html页面保存数的两种方式

    原文链接:https://blog.csdn.net/qq_37936542/article/details/78866755 需求:微信开发时,在某个页面授权获取用户的openid,但是每次刷新页面 ...

  9. D3.js以及通用JS(JavaScript)读取并解析server端JSON的注意事项

    这个需求事实上挺明白的.可是网上搜出来的教程都乱七八糟,认为实在须要自己总结一下. D3.js眼下已经被广泛使用在数据可视化领域,随着大数据的持续发展,这个框架预计会在今后更加流行(据说其作者Mike ...

  10. [NPM] Use a shorthand syntax for running multiple npm scripts with npm-run-all

    Running multiple scripts in series or in parallel can become very verbose. Using a tool such as npm- ...