题目大意
守望者每秒有三种决策,求运动的最远距离
分析
闪烁法术比跑步快一点点。
你休息 5 s ,闪烁 2 s ,跑 120 米,速度为 120/7,刚好比跑步快那么一点点。
然后能闪烁我们肯定是要闪烁的。
那么什么时候换跑步呢?应该是在剩余时间不足够 休息+闪烁 时。
但是我很懒
但我们想到一个更好的办法,我们生成两个人
既然应该是在剩余时间不足够 休息+闪烁 时跑步
那么第一个人一直闪烁,第二个人一直跑同时与第一个比较快慢
如果第一个人快就把第二个人前面跑的全换闪烁,就和第一个人一样快
最后,第二个人就会在剩余时间不足够 休息+闪烁 时跑步
这样不就完事了吗?
代码
#include<bits/stdc++.h>
using namespace std;
int m,s,t;
int s1=0,s2=0;
int main()
{
scanf("%d%d%d",&m,&s,&t);
for(int i=1;i<=t;++i)
{
s1+=17;
//第一个人
if(m>=10) m-=10,s2+=60;
else m+=4;
//第二个人
s1=max(s1,s2);
if(s1>=s)
{
printf("Yes\n%d",i);
return 0;
}
}
printf("No\n%d",s1);
return 0;
}