简单DP wa了好几次 原来0x7ffffff的默认大小为2^27
还要注意 输入2 6 和6 2 一样
http://poj.org/problem?id=2355
 
#include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
#include<algorithm>
#include<string>
#define min(a,b)a>b?b:a
#define Max 10000000001

using namespace std;

long l1,l2,l3,c1,c2,c3;
inline long pay(long k)
{
    if(k<=l1)
    return c1;
    if(k<=l2)
    return c2;
    return c3;
}
int main()
{
    long i,j,n;
    long cost[10001];
    long road[10001];
    long start, end;

    while(cin>>l1>>l2>>l3>>c1>>c2>>c3)
    {cin>>n;
    cin>>start>>end;
    road[1]=0;
    for(i=2;i<=n;i++)
    cin>>road[i];
    if(start>end)
    swap(start,end);
    for(i=start;i<=end;i++)
    cost[i]=Max;
    cost[start]=0;
    for(i=start;i<end;i++)
    {
        for(j=i+1;road[j]-road[i]<=l3&&j<=end;j++)
        cost[j]=min(cost[j],cost[i]+pay(road[j]-road[i]));

    }
    cout<<cost[end]<<endl;
    }
    return 0;
}

 

posted on 2011-11-22 15:36  夜->  阅读(201)  评论(0编辑  收藏  举报