OJ题目:click here~~
AC_CODE
typedef long long LL ;
const int MAX_N = 20000 ;
const LL INF = (LL)1<<40 ;
LL L1 , L2 , L3 , C1 , C2 , C3 , dp[MAX_N] ;
LL getPrice(int k){
if(0 < k && k <= L1) return C1 ;
if(L1 < k && k <= L2) return C2 ;
if(L2 < k && k <= L3) return C3 ;
}
int main(){
LL n , i , j , k , A , B , dis[MAX_N] ;
//freopen("in.txt" , "r" , stdin) ;
while(cin >> L1){
cin >> L2 >> L3 >> C1 >> C2 >> C3 >> A >> B >> n ;
memset(dp , 0 , sizeof(dp)) ;
for(i = 2;i <= n;i++) cin >> dis[i] ;
dis[1] = 0 ;
for(i = n;i > 1;i--)
dis[i] = dis[i] - dis[i - 1];
LL d , m ;
for(i = A + 1;i <= B;i++){
d = 0 ;
m = INF;
for(j = i - 1;j >= A;j--){
d += dis[j + 1] ;
if(d > L3) break ;
m = min(m , getPrice(d) + dp[j]) ;
}
dp[i] = m ;
}
cout << dp[B] << endl ;
}
return 0 ;
}