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;
}
要注意的只是在去红绿灯的路上可能已经红绿反复好几次,时间要压缩
标签:洛谷,红绿灯,题解,压缩,CF29B,ti From: https://www.cnblogs.com/Endline/p/17524966.html