HDU 1494 跑跑卡丁车 dp

新闻资讯 老翟笔记小编 2024-03-21 16:50:31 40 0

老翟笔记今日分享的是:HDU 1494 跑跑卡丁车 dp

=###题目描述 跑跑卡丁车是时下一款流行的网络休闲游戏,你可以在这虚拟的世界里体验驾驶的乐趣。这款游戏的特别之处是你可以通过漂移来获得一种加速卡,用这种加速卡可以在有限的时间里提高你的速度。 为了使问题简单化,我们假设一个赛道分为L段,并且给你通过每段赛道的普通耗时Ai和用加速卡的耗时Bi。加速卡的获得机制是:普通行驶的情况下,每通过1段赛道,可以获得20%的能量(N2O). 能量集满后获得一个加速卡(同时能量清0).加速卡最多可以储存2个,也就是说当你有2个加速卡而能量再次集满,那么能量清零但得不到加速卡。一个加速卡只能维持一段赛道,游戏开始时没有加速卡。 问题是,跑完n圈最少用时为多少? Input 每组输入数据有3行,第一行有2个整数L(L<100) , N(N<100)分别表示一圈赛道分为L段和有N圈赛道,接下来两行分别有L个整数Ai和Bi(Ai > Bi). Output 对于每组输入数据,输出一个整数表示最少的用时. Sample Input 18 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 8 8 8 1 1 8 8 Sample Output 145 对于sample这组数据,你可以先在普通情况下行驶前14段,这时你有2个加速卡以及80%的能量(N2O).在第15和16段用掉2个加速卡,通过第17段赛道后又可以得到一个加速卡,在第18段赛道使用. 子状态 首先考虑能量的处理。这里设20%的能量为1单位。由于最多有2张加速卡,所以最多有14单位的能量。 则可以得到子状态:dp[i][j]表示走了i个赛道,剩余j单位能量时所用的最小时间。 初始化和状态转移方程 首先考虑初始化的问题。 显然dp[0][0]=0。由于前5段赛道不可能用加速卡,所以这几段赛道只能用普通速度行驶。 对于不同的位置at和不同的剩余能量k,有不同的状态转移方程: 当0<=k<4时, dp[at][k+1]=min(dp[at][k+1],dp[at-1][k]+a[j])。 当5<=k<=14时, dp[at][k-5]=min(dp[at][k-5],dp[at-1][k]+b[j])。 dp[at][k+1]=min(dp[at][k+1],dp[at-1][k]+a[j])。 另外注意 dp[at][10]=min(dp[at][10],dp[at-1][14]+a[j]). 代码 #include<stdio.h> #include<cstring> #include<algorithm> using namespace std; const int Size=101; const int Maxn=17; int a[Size],b[Size]; int dp[Size*Size][Maxn]; //dp[i][j] ×ßÁËi¸öÈüµÀÓÐjÄÜÁ¿µÄ×îСÏûºÄʱ¼ä int main() {int l,n,cnt,ans;while(scanf("%d %d",&l,&n)==2) {memset(dp,0x3f,sizeof(dp));ans=0x3f3f3f3f;dp[0][0]=0;for(int i=1; i<=l; i++) {scanf("%d",&a[i]);if(i<=5) dp[i][i]=dp[i-1][i-1]+a[i]; //³õʼ»¯ }for(int i=1; i<=l; i++)scanf("%d",&b[i]);cnt=l*n;for(int i=0; i<n; i++) { //dp for(int j=1; j<=l; j++) {if(!i && j<5) continue;int at=i*l+j;for(int k=0; k<5; k++)dp[at][k+1]=min(dp[at][k+1],dp[at-1][k]+a[j]);for(int k=5; k<=14; k++) {dp[at][k-5]=min(dp[at][k-5],dp[at-1][k]+b[j]);dp[at][k+1]=min(dp[at][k+1],dp[at-1][k]+a[j]);}dp[at][10]=min(dp[at][10],dp[at-1][14]+a[j]);}}for(int i=0; i<15; i++)ans=min(ans,dp[cnt][i]);printf("%d\n",ans);}return 0; }

本文结束,感谢您的阅读和支持,希望以上内容能给你带来帮助。本文章来自网络,由老翟笔记小编团队整理发布。

  • 随机文章
  • 热门文章
  • 热评文章

评论区