码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 2059 龟兔赛跑->动态规划

时间:2015-05-06 17:48:35      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   动态规划   

分析:动态规划,一定要注意当前状态需要和前面所有的状态一起进行考虑,另外注意浮点数的处理,还WA了一次。

#include<iostream>
using namespace std;

int L,N,C,T,VR,VT1,VT2;
int a[105];
double dp[105];

double min_time_ij(int i_0,int j_0)
{
	if(j_0-i_0>C)
		return C*1.0f/VT1+(j_0-i_0-C)*1.0f/VT2;
	else
		return (j_0-i_0)*1.0f/VT1;
}

int main()
{
	int i,j;
	double min,value;

	while(cin>>L)
	{
		cin>>N>>C>>T;
		cin>>VR>>VT1>>VT2;
		for(i=1;i<=N;i++)
			cin>>a[i];
		a[0]=0;
		a[N+1]=L;            //最终距离作为结尾
		dp[0];

		for(i=1;i<=N+1;i++)
		{
			min=1000000;
			for(j=0;j<i;j++)
			{
				if(j==0)         //一开始电动车有电
					value=dp[j]+min_time_ij(a[j],a[i]);
				else
					value=dp[j]+min_time_ij(a[j],a[i])+T;  //第j个站充电后直接到达i。
				min=min<value?min:value;
			}
			dp[i]=min;
		}
		if(dp[N+1]<L*1.0f/VR)
			cout<<"What a pity rabbit!"<<endl;
		else
			cout<<"Good job,rabbit!"<<endl;
	}
	return 0;
}


HDU ACM 2059 龟兔赛跑->动态规划

标签:c   c++   acm   算法   动态规划   

原文地址:http://blog.csdn.net/a809146548/article/details/45537531

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!