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