洛谷 P1095 守望者的逃离

M,S,TM,S,T 分别表示初始魔法值,起点到终点的距离,限制时间。

每个时刻有三种选择:

  1. 1717
  2. 1010 点魔法,走 6060
  3. 原地休息,恢复 44 点魔法

能到终点则输出最短时间,不能的话则输出能走的最远距离。

思路:按照时间去推,由于闪现肯定比跑步快,所以能闪则闪。

#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;
}

在这里插入图片描述

posted @ 2020-06-18 23:15  winechord  阅读(76)  评论(0编辑  收藏  举报