题解:本题主要考查贪心。分析题意知:闪现一般比跑快。所以一开始用闪现,用max比较,可得答案。注意(要更新值,更新值,更新值!)
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int m,s,times,i,j;
int dp[300001];
int main()
{
cin>>m>>s>>times;
for(i=1;i<=times;i++)
{
if(m>=10)
{
m=m-10;dp[i]=dp[i-1]+60;
}
else {m=m+4;dp[i]=dp[i-1];}
}
for(j=1;j<=times;j++)
{
dp[j]=max(dp[j],dp[j-1]+17);
if(dp[j]>=s){cout<<"Yes"<<endl<<j;return 0;}
}
cout<<"No"<<endl<<dp[times];
return 0;
}