洛谷 P1095 守望者的逃离
分别表示初始魔法值,起点到终点的距离,限制时间。
每个时刻有三种选择:
- 走 米
- 用 点魔法,走 米
- 原地休息,恢复 点魔法
能到终点则输出最短时间,不能的话则输出能走的最远距离。
思路:按照时间去推,由于闪现肯定比跑步快,所以能闪则闪。
#include<iostream>
#include<cstdio>
using namespace std;
int m,s,T,s1,s2,t;
int main(){
#ifdef WINE
freopen("data.in","r",stdin);
#endif
scanf("%d%d%d",&m,&s,&T);
while(t++<T){
s1+=17;
if(m>=10)s2+=60,m-=10;
else m+=4;
if(s2>s1)s1=s2;
if(s1>s){
printf("Yes\n%d\n",t);
return 0;
}
}
printf("No\n%d\n",s1);
return 0;
}