对于题意理解上,需要额外注意:
该铁路总线路站点是从站点1开始编号一直到N
起始站点A和终止站点B随意即:1=<A<=N,1<=B<=N
#include <iostream> #include <vector> #define MAX 999999 using namespace std; int main(){ long long L1,L2,L3,C1,C2,C3; long long A,B;//起始站和终点站 long long N;//总站点数 long long cost;//计算站点间的花费 while(cin>>L1>>L2>>L3>>C1>>C2>>C3){ cin>>A>>B; cin>>N; vector<long long> stations(N+1,0);//stations[i]表示第一个站点到第i个站点的距离 for(int i=2;i<=N;i++){ cin>>stations[i]; } vector<long long>dp(N+1,MAX);//dp数组定义为从第一个站点到第i个站点的最小花费 dp[A]=0; for(int i=A+1;i<=B;i++){ for(int j=i-1;j>=A;j--){ if(stations[i]-stations[j]<=L3){ if(stations[i]-stations[j]<=L1){ cost=C1; } else if(stations[i]-stations[j]<=L2){ cost=C2; } else{ cost=C3; } dp[i]=min(dp[i],dp[j]+cost); } else{ break; } } } cout<<dp[B]<<endl; } return 0; }