题目链接:https://www.luogu.org/problem/P1095
思路:
1:参考博客:https://www.luogu.org/blog/36616/solution-p1095
2:最短时间走最多路程
3:每一秒有三种决策,1:闪烁法术 2:休息 3:跑步
4:跑步与闪烁法术分开处理
#include <bits/stdc++.h>
using namespace std;
int dp[300001],m,s,t;
int main()
{
cin>>m>>s>>t;
for(int i=1;i<=t;i++){
if(m>=10)dp[i]=dp[i-1]+60,m-=10;
else dp[i]=dp[i-1],m+=4;
}
for(int i=1;i<=t;i++){
dp[i]=max(dp[i],dp[i-1]+17);
if(dp[i]>=s){
cout<<"Yes\n"<<i<<endl;
return 0;
}
}
cout << "No\n"<<dp[t] << endl;
return 0;
}