sicily 1264. Atomic Car Race

来源:互联网 发布:淘宝注册打电话验证170 编辑:程序博客网 时间:2024/05/22 15:52
//简单的dp//由于换胎后相当于又从原点开始跑,所以在计算直达所需时间时可以优化#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){int n,an[101],r;double b,v,e,f,dp[101],cost[10001];//cost[i]表示换胎后(或从起始点)行驶距离i所需时间while( scanf("%d",&n) &&n){int i,j;an[0]=0;for( i=1; i<=n; i++)scanf("%d",&an[i]);scanf("%lf%d%lf%lf%lf",&b,&r,&v,&e,&f);cost[0]=0.0;for( i=0; i<an[n]; i++)if( i<r)cost[i+1] =cost[i] +1/(v - f * (r - i));elsecost[i+1] =cost[i] +1/(v - e * (i - r));//简单的dpfor( i=1; i<=n; i++){dp[i] =cost[an[i]];//开始在这里犯了错,应为an[i],不是ifor( j=1; j<i; j++)dp[i] = min( dp[i], dp[j]+cost[an[i]-an[j]]+b);  //an[i]-an[j]为两点间距离}printf("%.4lf\n",dp[n]);}return 0;}

原创粉丝点击