CF868B Race Against Time 题解。
题目传送门
感觉此题还是挺坑的。
注意
1.秒钟、分钟、时钟是会动的,但只能在开始的一瞬间动,并且移动的距离 $< 1$。
2.米莎可以瞬间移动因为她开挂了。
3.米莎想咋走就咋走(也就是说她既可以顺时针走也可以逆时针走)。
思路
暴力模拟米莎的运动(真的很暴力,毕竟其他大佬的思路我也不懂)。
这里将表针视为不动,米莎每次走半个格,便可以变相地实现米莎的瞬间移动。
先顺时针走,移动的过程中判断是否碰到指针,碰到后再逆时针走,如果再次碰到,输出 NO 结束,如果有一次没碰到,输出 YES 结束。
在模拟时要统一单位,我这里统一成了秒。
AC 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #include<bits/stdc++.h> using namespace std; long double t1,t2,shi,miao,fen,mm,mm2,mm3; int main(){ cin>>shi>>fen>>miao>>t1>>t2; mm=(t1*60)/12,mm2=(t2*60)/12,mm3=(shi*60)/12; miao+=0.5,fen+=0.5,mm3+=0.5; if(mm3>60) mm3-=60; if(miao>60) miao-=60; if(fen>60) fen-=60; while(1){ mm+=0.5; if(mm>60) mm-=60; if(mm==mm2){ cout<<"YES"; return 0; } if(mm==mm3||mm==fen||mm==miao) break; } mm=(t1*60)/12; while(1){ mm-=0.5; if(mm==0) mm=60; if(mm==mm3||mm==fen||mm==miao){ cout<<"NO"; return 0; } if(mm==mm2){ cout<<"YES"; return 0; } } return 0; }
|
补充:
木的这篇题解给我打回后直接把题解关了是什么意思?