1. 程式人生 > >洛谷 P1095 守望者的逃離

洛谷 P1095 守望者的逃離

閃爍 逃離 con new 收益 枚舉 show ostream const

傳送門:洛谷 P1095 守望者的逃離
算法分析:分兩種情況:
1、運用貪心,盡可能用閃爍法術
2、枚舉秒數,判斷此時用跑步速度是否能獲得更大收益

時間復雜度:\(O(t)\)


#include<iostream>
#include<cstdio>
using namespace std;
const int maxT=300000;
int t,m,s,dp[maxT+1],ans=0;
int main()
{
    scanf("%d%d%d",&m,&s,&t);
    for(int i=1;i<=t;i++)
    {
        if(m>=10) {dp[i]=dp[i-1]+60; m-=10;}
        else {dp[i]=dp[i-1]; m+=4;}
    }
    for(int i=1;i<=t;i++)
    {
        dp[i]=max(dp[i],dp[i-1]+17);
        if(dp[i]>=s) {ans=i; break;}
    }
    if(ans) printf("%d",ans);
    else printf("%d",dp[s]);
    return 0;
}

洛谷 P1095 守望者的逃離