题目1086:最小花费

来源:互联网 发布:淘宝模板设计师赚钱吗 编辑:程序博客网 时间:2024/06/05 10:21

#include<cstdio>#include<iostream>#define INF 99999999999999using 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****************************************************************/


0 0
原创粉丝点击