1 条题解

  • 0
    @ 2025-2-14 21:20:41

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    using namespace std;
    
    int m,s,t;//m=Mana即为魔法值,s=Space为距离,t=timeleft为剩余时间。 
    void escape(void)
    {
    	int se=0,te=t;//se为Spaceelse,te为timeleftelse。 
    	while(m>=10&&t>0&&s-se>0)//闪烁魔法。。。 
    	{
    		if(s-se>17)
    		{
    			se+=60;
    			m-=10;
    			t--;
    		}
    		else cout<<"Yes"<<endl<<te-t+1;
    	}
    	while(t>0&&s-se>0) //决策判断。 
    	{
    		if((m==0||m==1)&&t>=7&&s-se>102)
    		{
    			t-=7;
    			se+=120;
    		}
    		else if(m>=2&&m<=5&&t>3&&s-se>34)
    		{
    			m-=2;
    			t-=3;
    			se+=60;
    		}
    		else if(m>=6&&t>=2&&s-se>17)
    		{
    			m-=6;
    			t-=2;
    			se+=60;
    		}
    		else
    		{
    			se+=17;
    			t--;
    		}
    	}
    	if(s<=se)
    	{
    		cout<<"Yes"<<endl<<te-t;
    	}
    	else
    	{
    		cout<<"No"<<endl<<se;
    	}
    	return;
    }
    int main(void)
    {
    	//freopen("escape.in","r",stdin);
    	//freopen("escape.out","w",stdout);
        cin>>m>>s>>t;
        escape();
        return 0;
    }
    

    Pascal :

    
    
    
    var 
    m,s,t,ti:longint; 
    ms:array[1..2,0..300000] of longint; 
    ts:array[0..300000] of longint; 
    begin 
    {assign(input,'escape.in'); reset(input);
     assign(output,'escape.out'); rewrite(output);}
    readln(m,s,t); 
    ms[2,0]:=m; 
    ts[0]:=0; 
    for ti:=1 to t do {动态规划} 
    begin 
    if ms[2,ti-1]>=10 then {如果能使用闪烁,就是用} 
    begin 
    ms[1,ti]:=ms[1,ti-1]+60; 
    ms[2,ti]:=ms[2,ti-1]-10; 
    end 
    else 
    begin 
    ms[1,ti]:=ms[1,ti-1]; {恢复魔法值} 
    ms[2,ti]:=ms[2,ti-1]+4; 
    end; 
    if ts[ti-1]+17>ms[1,ti] then ts[ti]:=ts[ti-1]+17 else ts[ti]:=ms[1,ti]; {找出大的值} 
    if ts[ti]>=s then {如果顺利逃出,输出结果} 
    begin 
    writeln('Yes'); 
    writeln(ti); 
    close(output);
    halt; 
    end; 
    end; 
    writeln('No'); {无法逃出,输出结果} 
    writeln(ts[t]); 
    {close(output);}
    end. 
    
    • 1

    信息

    ID
    821
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者