其他分享
首页 > 其他分享> > P1095 [NOIP2007 普及组] 守望者的逃离(DP)

P1095 [NOIP2007 普及组] 守望者的逃离(DP)

作者:互联网

在这里插入图片描述

在每一秒可以进行三种操作:闪烁、休息、跑步,闪烁和休息涉及到能量的回复和使用,先计算闪烁得举例,在闪烁的举例的基础上去计算跑步的举例。
f[i]:表示在i秒内移动的最远的举例

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 300010;

int m, s, t;
int f[N];

int main()
{
    cin >> m >> s >> t;
    
    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 += 4;
    }
    int endT = t + 1;
    for(int i = 1; i <= t; i ++)
    {
        if(f[i] - f[i-1] < 17) f[i] = f[i-1] + 17;
        if(f[i] > s) endT = min(endT, i);
    }
    
    if(f[t] > s) cout << "Yes" << endl << endT << endl;
    else cout << "No" << endl << f[t] << endl;
    
    return 0;
}

标签:10,NOIP2007,endT,int,守望者,P1095,举例,include,闪烁
来源: https://blog.csdn.net/qq_45260619/article/details/116834323