瞌睡小源


私信TA

用户名:H2130823055

访问量:4895

签 名:

我が名はめぐみん、爆裂魔法を操りし者

等  级
排  名 45
经  验 11514
参赛次数 5
文章发表 76
年  龄 0
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:

本题使用贪心去解,如果走路比使用闪烁块就走路,如果闪烁快就直接用魔法

在最开始时,如果有魔法就先把魔法用到不能再用为止

用光魔法后开始比较走路与等待回魔+闪烁谁快

将两种状态同时运行,当某个时间点等待回魔+闪烁比走路要块的话就直接使用等待回魔+闪烁,而后继续同时运行知道时间耗尽或逃跑成功

注意事项:闪烁也是要时间的!


参考代码:

#includeusing namespace std;
int main()
{
	int m,s,t;
	cin>>m>>s>>t;
	int away=0;
	int time=0;
	while(m>=10)//直接使用闪烁
	{
		m-=10;
		time++;
		away+=60;
		if(away>=s)//直接闪烁就可以逃离
		{
			cout<<"Yes"<<endl<<time;
			return 0;
		} 
		if(time==t)//直接闪烁都不能逃离
		{
			cout<<"No"<<endl<<away;
			return 0;
		}
		
	}
	int magic=0;//闪烁移动的距离
	int run=0;//跑步移动的距离
	for(time++;time=10)//如果可以闪烁了就把闪烁移动的距离加上
		{
			magic+=60;
			m-=10;
		}
		if(magic>run+(magic/60)*17&&time+(magic/60)=s)
		{
			cout<<"Yes"<<endl<<time;
			return 0;
		}
		if(time==t)
		{
			cout<<"No"<<endl<<away+run;
			return 0;
		}
	}
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区