解题思路:

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

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

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

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

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


参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论