原题链接:守望者的逃离
解题思路:
本题使用贪心去解,如果走路比使用闪烁块就走路,如果闪烁快就直接用魔法
在最开始时,如果有魔法就先把魔法用到不能再用为止
用光魔法后开始比较走路与等待回魔+闪烁谁快
将两种状态同时运行,当某个时间点等待回魔+闪烁比走路要块的话就直接使用等待回魔+闪烁,而后继续同时运行知道时间耗尽或逃跑成功
注意事项:闪烁也是要时间的!
参考代码:
#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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复