codevs 1349 板猪的火车票

1349 板猪的火车票

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
题目描述 Description

奸商zn(请勿对号入座)开办了一家火车公司,弱弱的板猪要去看望她的朋友小板猪,万恶的zn对板猪实施各种提高价,板猪不寒而栗。。。

铁路线上有n(2<=n<=10000)个火车站,每个火车站到该线路的首发火车站距离都是已知的。任意两站之间的票价如下表所示:

站之间的距离 - X      票价

0<X<=L1       C1

L1<X<=L2          C2

L2<X<=L3          C3

其中L1,L2,L3,C1,C2,C3都是已知的正整数,且(1 <= L1 < L2 < L3 <= 10^9, 1 <= C1 < C2 < C3 <= 10^9)。显然若两站之间的距离大于L3,那么从一站到另一站至少要买两张票。注意:每一张票在使用时只能从一站开始到另一站结束。

现在板猪要从A到B,为了不让奸商zn敲竹杠,你能帮助板猪吗?

输入描述 Input Description

输入文件的第一行为6个整数, L1, L2, L3, C1, C2, C3 (1 <= L1 < L2 < L3 <= 10^9, 1 <= C1 < C2 < C3 <= 10^9) ,这些整数由空格隔开.第二行为火车站的数量N (2 <= N <= 10000).第三行为两个不同的整数A、B,由空格隔开。接下来的 N-1 行包含从第一站到其他站之间的距离.这些距离按照增长的顺序被设置为不同的正整数。相邻两站之间的距离不超过L3. 两个给定火车站之间行程花费的最小值不超过10^9,而且任意两站之间距离不超过 10^9。

输出描述 Output Description

   输出文件中只有一个数字,表示从A到B要花费的最小值.

样例输入 Sample Input

3 6 8 20 30 40

7

2 6

3

7

8

13

15

23

样例输出 Sample Output

70

 1 /*基本思路:序列性DP 
 2 f[i]数组储存着从A到i的最小花费,它是由它之前的站点中可以用一张票坐过来的,以此更新*/
 3 #include<cstdio>
 4 #include<iostream>
 5 #include<cstring>
 6 using namespace std;
 7 #define N 10001
 8 int l[4],c[4],n,A,B;
 9 long long int sum[N],f[N];
10 void input()
11 {
12     for(int i=1;i<=3;++i)
13     scanf("%d",&l[i]);
14     for(int i=1;i<=3;++i)
15     scanf("%d",&c[i]);
16     scanf("%d",&n);
17     sum[1]=0;
18     scanf("%d%d",&A,&B);
19     for(int i=2;i<=n;++i)
20     scanf("%d",&sum[i]);
21 }
22 int judge(int a,int b)
23 {
24     int cha=a-b;
25     if(a-b<=l[1]) return 1;/*让从t--i选取价格尽量低的票*/
26     if(a-b<=l[2]) return 2;/*一二三是判断买那张票*/
27     if(a-b<=l[3]) return 3;
28     return 0;
29 }
30 void DP()
31 {
32     memset(f,127,sizeof(f));
33     f[A]=0;
34     int flag=0;
35     for(int i=A+1;i<=B;++i)
36       for(int t=A;t<=i-1;++t)
37       {
38           flag=judge(sum[i],sum[t]);/*判读买那张票*/
39         if(!flag) continue;/*不能一次到达*/
40         f[i]=min(f[i],f[t]+c[flag]);/*否则的话更新f[i]的最小数*/
41       }
42 }
43 int main()
44 {
45     input();
46     DP();
47     cout<<f[B];
48     return 0;
49  } 
View Code
原文地址:https://www.cnblogs.com/c1299401227/p/5313388.html