ACM 1108:守望者的逃离

原题链接:守望者的逃离
这题我陷入了一个误区,就是不断的寻找适合条件的距离范围和时间范围,导致情况越来越复杂,其实只要找到这一秒的最优解就ok

#include 
#include 
#include
using namespace std;
int main()
{
    int m,S,T;          //m为魔法值,s为距离,t为时间
    scanf("%d %d %d",&m,&S,&T);
    int t;
    int Max=0;
    int s=0;							//s仅为技能闪现的距离
    for(t=1;t<=T;t++)
    {
        if(m>=10)
        {
            m-=10;
            s+=60;
        }
        else
            m+=4;
        Max = max(Max+17,s);					//寻找最优解,每一秒都在计算是原地回复后闪现好还是跑步好
        if(Max>S)										//前几秒的情况也会统计在内,再进行比较
        {
            cout <<"Yes"<

这方法是两种情况同时进行,再作比较,就不用判断不同的时间,距离范围使用哪种方法

你可能感兴趣的:(训练)