每日一dp(2)——龟兔赛跑(hdu 2059)

简介:

比較经典的动态规划的题目了

一般动态规划的想法都是先推断是否有最优子结构,无后效性。接着从状态转移入手,尽量细分状态(即给定N得到N+1),完了再递推计算

难点:转移方程,其一般也难在怎样描写叙述一个结点

有时候不太好做就结合使用记忆化搜索(从大到小搜索,由于多个小的可能会组成一个大的导致无效计算过多)


/************************************************************************/
/* 
动态规划三要素:
1.最优子结构 一个最优化策略的子策略总是最优的
2.无后效性   它曾经各阶段的状态无法直接影响它未来的决策,而仅仅能通过当前的这个状态
3.子问题重叠 动态规划将原来具有指数级时间复杂度的搜索算法改进成了具有多项式时间复杂度的算法

非常明显的状态转移
拆分的要素是时间,这里对于每一个电桩都是一个状态断点,这里加入上起点终点构成0.1.2...N+1种状态
对于某一个电桩,其最优化策略是 min(之前各个电桩最优状态下加上充电时间)
dp[i]=min(dp[j])+T;0<=j<i<=N+1

*/
/************************************************************************/

#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#define maxn 100+10

int L,C,T,N,VR,V1,V2,M,num;
float dp[maxn];
int charge[maxn];
int main()
{
    int i,j,k;
	float tmp,rabbit,TV1,ans;
    while(scanf("%d%d%d%d%d%d%d",&L,&N,&C,&T,&VR,&V1,&V2)!=EOF)
    {
		for(i=1;i<=N;i++)
			scanf("%d",charge+i);
		dp[0]=-1*T;//刚開始不用充电
		charge[0]=0;//补充充电桩
		charge[N+1]=L;//补充充电桩
		TV1=C/(V1+0.0);//计算骑在最大可行距离C下,电动车用时
		rabbit=L/(VR+0.0);//计算兔子用时
		for(i=1;i<=N+1;i++)
		{
			ans=1e9;//求dp[i]最小值
			for(j=0;j<i;j++)
			{
				tmp=dp[j];
				k=charge[i]-charge[j];
				if(C<k)//推断可否一次性用电动车骑完
					tmp+=TV1+(k-C+0.0)/V2;
				else
					tmp+=k/(V1+0.0);
				ans=ans>tmp?

tmp:ans;//求dp[i]最小值 } dp[i]=ans+T; } if(dp[N+1]<rabbit) printf("What a pity rabbit!\n"); else printf("Good job,rabbit!\n"); } return 0; }






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5222352.html,如需转载请自行联系原作者

相关文章
|
1月前
数字游戏2(数位dp)
数字游戏2(数位dp)
25 0
|
19小时前
|
算法 iOS开发
程序与技术分享:2020CCPC秦皇岛K【Kindom'sPower】(树上贪心dp)
程序与技术分享:2020CCPC秦皇岛K【Kindom'sPower】(树上贪心dp)
|
1月前
牛客小bai月赛39 F 孤独(dp)
牛客小bai月赛39 F 孤独(dp)
16 0
|
1月前
【每日一题Day126】LC1140石子游戏Ⅱ | 博弈dp 记忆化搜索
【每日一题Day126】LC1140石子游戏Ⅱ | 博弈dp 记忆化搜索
35 0
|
10月前
|
存储 算法 C语言
【动态规划】LeetCode 312. 戳气球 --区间DP问题
因为一些事,最近状态不是很好,加上今天的每日一题有点难,看的烦躁(就是菜 ,就来更新一下今天与每日一题相关的区间Dp问题(戳气球),这篇也是关于区间Dp的问题 uu可以看看
82 0
过河卒-蓝桥杯-动态规划
过河卒-蓝桥杯-动态规划
87 0
|
测试技术
洛谷P8601[蓝桥杯][2013年第四届真题]剪格子
洛谷P8601[蓝桥杯][2013年第四届真题]剪格子
60 0
闫氏dp分析法(线性dp)AcWing 1015. 摘花生
闫氏dp分析法(线性dp)AcWing 1015. 摘花生
53 0
|
人工智能
codeforces455——A. Boredom(线性DP)
codeforces455——A. Boredom(线性DP)
105 0
codeforces455——A. Boredom(线性DP)