题目1086:最小花费

题目描述:
在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下:
距离s           票价
0<S<=L1         C1
L1<S<=L2        C2
L2<S<=L3        C3
输入保证0<L1<L2<L3<10^9,0<C1<C2<C3<10^9。
每两个站之间的距离不超过L3。
当乘客要移动的两个站的距离大于L3的时候,可以选择从中间一个站下车,然后买票再上车,所以乘客整个过程中至少会买两张票。
现在给你一个 L1,L2,L3,C1,C2,C3。然后是A B的值,其分别为乘客旅程的起始站和终点站。
然后输入N,N为该线路上的总的火车站数目,然后输入N-1个整数,分别代表从该线路上的第一个站,到第2个站,第3个站,……,第N个站的距离。
根据输入,输出乘客从A到B站的最小花费。

 

输入:
以如下格式输入数据:
L1  L2  L3  C1  C2  C3
A  B
N
a[2]
a[3]
……
a[N]

 

输出:
可能有多组测试数据,对于每一组数据,
根据输入,输出乘客从A到B站的最小花费。

 

样例输入:
1 2 3 1 2 3
1 2
2
2
样例输出:
2
 1 #include <iostream>// 1086
 2  
 3 using namespace std;
 4  
 5 const int N = 2000;
 6  
 7 int main(void)
 8 {
 9     long long l1;
10     long long l2;
11     long long l3;
12     long long c1;
13     long long c2;
14     long long c3;
15  
16     long long a;
17     long long b;
18  
19     long long dist[N] = {0};
20     long long n;
21     long long i;
22     long long j;
23  
24     long long price[N] ;
25      
26  
27     while (cin >> l1 >> l2 >> l3 >> c1 >> c2 >> c3)
28     {
29         cin >> a >> b;
30         cin >> n;
31  
32         for(i = 2; i <= n; ++i)
33             cin >>dist[i];
34          
35         dist[1] = 0;
36         for(i = 1; i < n; ++i)  
37             dist[i] = dist[i+1] - dist[i];
38  
39         price[a] = 0;
40  
41         for(i = a+1; i <= b; ++i)
42         {
43              
44             long long s = 0;
45             long long t ;
46             long long mi = price[i-1] + c3;
47  
48             for(j = i-1 ; j >= a; --j)
49             {
50                 s += dist[j];
51  
52                 if(s <= l1)
53                     t = price[j] + c1;
54  
55                 if(s <= l2 && s > l1)
56                     t = price[j] + c2;
57  
58                 if(s <= l3 && s > l2)
59                     t = price[j] + c3;
60                  
61                 if(mi > t)
62                     mi = t;
63             }
64             price[i] = mi; 
65         }
66          
67         cout<<price[b]<<endl;
68  
69  
70     }
71     return 0;
72 }
73  

 

posted @ 2013-12-09 20:27  chchche  阅读(233)  评论(0编辑  收藏  举报