dp[i][j]表示在第i段赛道能量为j时所耗最短时间(i=0为第一段)#include<iostream>
#include<stdio.h>
#include<algorithm>
using
namespace
std;
int
m,n,ans;
int
t1[111],t2[111],t3[110],f1[111],f2[111],dp[111][111];
const
int
INF=100000000;
int
main()
{
int
cas;
scanf
(
"%d"
,&cas);
while
(cas--)
{
scanf
(
"%d%d"
,&n,&m);
for
(
int
i=0;i<n;i++)
{
scanf
(
"%d%d%d%d%d"
,&t1[i],&t2[i],&t3[i],&f1[i],&f2[i]);
}
for
(
int
i=0;i<n;i++)
for
(
int
j=0;j<=m;j++)
dp[i][j]=INF;
for
(
int
i=0;i<n;i++)
{
for
(
int
j=0;j<=m;j++)
{
if
(i==0)
{
dp[0][m-f1[0]]=t1[0];
dp[0][m]=min(t2[0],t3[0]);
break
;
}
else
{
if
(j-f1[i]>=0)dp[i][j-f1[i]]=min(dp[i][j-f1[i]],dp[i-1][j]+t1[i]);
dp[i][j]=min(dp[i][j],dp[i-1][j]+t2[i]);
if
(j+f2[i]<=m)dp[i][j+f2[i]]=min(dp[i][j+f2[i]],dp[i-1][j]+t3[i]);
if
(j+f2[i]>m)dp[i][m]=min(dp[i][m],dp[i-1][j]+t3[i]);
}
}
}
ans=INF;
for
(
int
i=0;i<=m;i++)
ans=min(ans,dp[n-1][i]);
printf
(
"%d\n"
,ans);
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥