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

分析:动态规划,一定要注意当前状态需要和前面所有的状态一起进行考虑,另外注意浮点数的处理,还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;
}
时间: 2024-10-22 21:50:46

HDU ACM 2059 龟兔赛跑->动态规划的相关文章

hdu 2059 龟兔赛跑(动态规划DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12442    Accepted Submission(s): 4666 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输

HDU ACM 1494 跑跑卡丁车动态规划

分析:L段,N圈,则总共可表示为L*N段,用增加20%的能量表示一个状态,则可表示20%,40%,%60...,共15个,注意第15个时要清零到两个能量卡:用dp[i][j]表示在第i段能量为j的已用时的最少时间.则可得到方程1.不用能量卡时dp[i][j]=min(dp[i][j],dp[i-1][j-1]+a[i-1]:用能量卡时dp[i][j-5]=min(dp[i][j-5],dp[i-1][j]+b[i-1]). #include<iostream> using namespace

[acm]HDOJ 2059 龟兔赛跑

题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2059 起点和终点,共n+2个点,n+2个状态,简单DP即可. 1 //11512698 2014-08-21 17:11:55 Accepted 2059 2 //62MS 368K 969 B G++ 空信高手 3 //起点和终点,共n+2个点,n+2个状态,简单DP即可 4 #include<iostream> 5 #include<cstdio> 6 using namespa

[ACM] hdu 1260 Tickets (动态规划)

Tickets Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 4   Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Jesus, what a great movie! Thou

HDU 2059 龟兔赛跑

题意:中文题,不解释. 思路:将长度为L分为n+2段:0,p[1],p[2]--,p[n],L. dp[i]为乌龟到第 i 段的最小时间, 乌龟可以再0~i-1段选择充电后到达 i 的最小时间,然后分类讨论下. #include<cstdio> #include<stdlib.h> #include<string.h> #include<string> #include<map> #include<cmath> #include<

HDOJ 2059 龟兔赛跑(DP)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12269    Accepted Submission(s): 4604 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击--赛跑

HDU ACM 1103 Flo&#39;s Restaurant

分析:借助STL的min_element实现.每次更新最先被占用的桌子,具体见注释. #include<iostream> #include<algorithm> using namespace std; int main() { int A,B,C; char s[10]; int a[102],b[102],c[102]; int curtime,count,ans; int *p; //桌子最先空闲时间 while(cin>>A>>B>>C

hdu 1494 跑跑卡丁车(动态规划)

Problem Description 跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣.这款游戏的特别之处是你可以通过漂移来获得一种加速卡,用这种加速卡可以在有限的时间里提高你的速度.为了使问题简单化,我们假设一个赛道分为L段,并且给你通过每段赛道的普通耗时Ai和用加速卡的耗时Bi.加速卡的获得机制是:普通行驶的情况下,每通过1段赛道,可以获得20%的能量(N2O).能量集满后获得一个加速卡(同时能量清0).加速卡最多可以储存2个,也就是说当你有2个加速卡而能量再次

hdu acm 1425 sort(哈希表思想)

sort Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25803    Accepted Submission(s): 7764 Problem Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且