题目1086:最小花费

#include<cstdio>
#include<iostream>
#define INF 99999999999999
using namespace std;
 
 
long long  L1, L2, L3, C1, C2, C3;
long long get_cost(long long dis);
int main(void)
{
    int A, B;
    int N;
    while(cin >> L1)
    {
        cin >> L2 >> L3 >> C1 >> C2 >> C3;
        cin >> A >> B;
        cin >> N;
         
        long long l[N + 5];
        l[1] = 0;
        long long temp;
        for(int i = 2; i <= N; i++)
        {
            cin >> temp;
            l[i] = temp;
        }
 
        long long dp[N + 5];
        dp[A] = 0;
         
        for(int i = A + 1; i <= B; i++) dp[i] = INF;
        for(int i = A; i <= B; i++ )
        {
            for(int j = i + 1; j <= B && l[j] - l[i] <= L3; j++)
            {
                long long cost = get_cost(l[j] - l[i]);
                if (cost + dp[i] < dp[j])
                    dp[j] = cost + dp[i];
            }
        }
       cout << dp[B] << endl; 
 
 
    }
 
}
long long get_cost(long long dis)
{
    if(dis <= L1) 
        return C1;
    else if(dis <= L2)
        return C2;
    else
        return C3;
}
 
/**************************************************************
    Problem: 1086
    User: cust123
    Language: C++
    Result: Accepted
    Time:10 ms
    Memory:1520 kb
****************************************************************/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值