对于题意理解上,需要额外注意:
该铁路总线路站点是从站点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;
}

京公网安备 11010502036488号