NOIP 2007 守望者的逃离

传送门:
https://ac.nowcoder.com/acm/contest/235/C

/*
这道题实际上是……动规+贪心
用10魔法能移动60m  显然用魔法是最快的
但是魔法值不够呢(伤心
那就对休息或者跑步进行选择
*/
#include <iostream>
#include <algorithm>
using namespace std;

int f[300010];//放多一点  同时放外面就不要memset了
int main()
{
    int m, s, t;//这个就不用注释了吧(坏笑
    cin >> m >> s >> t;//输入
    f[0] = 0;
    for (int i = 1; i <= t; i++)
    {
        if (m >= 10)//可以用魔法
        {
            f[i] = f[i - 1] + 60;//闪烁法术
            m -= 10;//魔法减少
        }
        else//魔法不够用了(悲催
        {
            f[i] = f[i - 1];//先休息吧
            m = m + 4;//恢复魔力(太棒了
        }
    }
    for (int i = 1; i <= t; i++)
    {
        f[i] = max(f[i], f[i - 1] + 17);
        if (f[i] >= s)
        {
            cout << "Yes" << endl;//"我跑出来了!",守望者欢呼
            cout << i << endl;
            return 0;//守望者,再见,GoodLuckToYou
        }
    }
    //难道没有逃出来?
    cout << "No" << endl;//(悲催
    cout << f[t] << endl;
    return 0;//守望者Goodbye
}
全部评论
弱弱地问一句是普及组的吗?
点赞 回复 分享
发布于 2019-08-24 13:10

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务