2011-04-04 17:32:24
题目地址:http://acm.fzu.edu.cn/problem.php?pid=1076
参考了他人的解题报告(http://hi.baidu.com/lasting_star/blog/item/cd7d52cd55020b1900e928e3.html )
其思路为:
本题是一个极值问题,要求具有最小的油耗。因此,它的解是唯一的。吉普车在沙漠中建临时油库,是逐步向前推进的,即建好一个油库后,再建下一个油库。为使油耗最小应做到:
(1) 每次吉普车出发时都应满载,放下一部分油再返回时,油恰好用完,并且把下一 个油库建好后这个油库中的油恰好用完。所以每个点的油库中的油都应是吉普车装油量的整数倍 ( 因为出发时满载 ) ,即 500Xk(k 为正整数 ) ,并且每个点的存油量为下一个点的存油量及吉普车为建立下个油库在两点之间往返的油耗之和 ( 下一个油库建成,前一个油库中的油恰好用完 ) 。
(2) 吉普车为建立下一个油库运油次数应最少。
用递推法解这个题,可由一个点的存油量推出相邻的另一个点的存油量及两点之 间的距离。但正推是不可能的,因为第一个点的存油量及其距 A 的距离尚无法确定。但是可推得最后一个点 Cl 的存油量应为 500L ,它与 B 相距为 500km ,这样吉普车从 Cl 到达 B 恰好跑一趟 B 。递推必须由已知的初始条件开始。为此本题应使用倒推法。图 2-7 为这一倒推过程的示意图。图中 A 为起始点, B 为终点, C1 ,
C1 ,…, Cn 分别为倒数第 1 , 2 ,…, n 个临时油库点。
由于 B 点无需储油,吉普车只须从 Cl 到达 B 即可,所以 C1 点的存油量应为 500L , C1 到 B 的距离为 500km 。为向 Cl 送 500L 油,吉普车最少要满载出发两次 ( 若一趟,因途中要耗油而不可能 ) ,往返共三程 ( 应为奇数 ) 。考虑最少油耗, C :点应存油 2'500L 。由此可得如下关系:
v2=3*x2+500=2*500
x2=500/3
C :距 B 的路程为:
d2=dl+x2=500+500/3=(1+1/3)*500
为向 C :送 1000L 油,吉普车最少要满载出发 3 次,往返共 5 趟。考虑最少油耗, C ,点应存油 3*500L 。由此可得:
v3=5*x3+v2=3*500
x3=500 / 5
d3=d2+x3=(1+1 / 3+1 / 5)*500
同理可知,对倒数第 i 个点有:
Vi=(2*i-1)Xi+Vi-1=i*500 —
Xi=500 / (2*i — 1) :
Di=di-1+xi=(1+1/3+1/5+ … 1 / (2*i-1))*500
自己还未证明该思路为什么能得到最小的耗油量!!!