P1095守望者的逃离

有贪心的思想,开挂肯定比一步一步跑快些啊。因为回复10点+开挂一次的时间是3.5s,移动了60m,而跑3.5s只有59.5m...当然是开挂好啊

那么分两次进行判定,先开挂,然后再一步一步跑:

#include <cstdio>
#include <algorithm>
using namespace std;
int dp[300001];
int main()
{
    int m,s,t;
    scanf("%d%d%d",&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)
    {
        printf("Yes\n%d",i);return 0;
        }
    }
    printf("No\n%d",dp[t]);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/LSWorld/p/xydp2.html