poj 2355 Railway tickets

简单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;

}

 

你可能感兴趣的:(poj)