洛谷CF29B题解

CF29B 交通信号灯

传送门

题目很好理解,这里就不多说了,思路都在代码里

#include<bits/stdc++.h>
using namespace std;
double l,d,v,g,r;
int main()
{
	cout<<fixed<<setprecision(8);//重置输出方式(保留8位小数) 
	cin>>l>>d>>v>>g>>r;
	if(l<=d)cout<<l/v;           //直接特判红绿灯比终点还远的情况 
	else
	{
		double ti=d/v;           //到红绿灯的时间 
		while(ti>=g+r)ti-=g+r;   //压缩为一个红绿灯时间段 
		if(ti<g)cout<<l/v;       //绿灯,不用等 
		else cout<<l/v+g+r-ti;   //红灯 ,加上等的时间 
	}
	return 0;
}

要注意的只是在去红绿灯的路上可能已经红绿反复好几次,时间要压缩

posted @ 2023-07-04 10:11  ysl_Endline  阅读(31)  评论(0)    收藏  举报