失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 快速公交(BRT)

快速公交(BRT)

时间:2020-10-16 19:28:13

相关推荐

快速公交(BRT)

【问题描述】

在城市里,快速公交(BRT)线路为一条直线,在其线路上有n个交叉路口,在每个路口都有一个交通信号灯,在红灯与绿灯之间周期性循环。

在绿灯亮起持续g秒的期间,允许通行,之后变为红灯,保持r秒,红灯期间禁止车辆通行。如果一辆车正好在变为红灯的时候到达交叉口,它应该停车,但是如果是正好变成绿灯,车辆就可以继续行驶。

所有的交通灯都有相同的变化时间,并且是同步的。换句话说,对于所有的交通灯来说,红灯(和绿灯)的相位是相同的,它们都在第0时刻开始变为绿色。

BRT公司已经设计好了公交车通过每个路段的时间,路段是指两个连续的交通灯之间的距离,或者是起点与第一个交通灯的距离,或者是最后一个交通灯与终点的距离,更精确地讲,BRT专家设计了n+ 1个正整数li,时间以秒计,表示公交车从起点到终点时穿过第i路段的时间,l1为从起点到第一个路口的时间,ln+1表示从最后一个路口·到终点的时间。

在一天内有q辆公交车离开起点,第i辆车在时刻ti(以秒计)出发,公司管理者想知道公交车在什么时间可以到达终点。

【输入形式】

输入的第一行为三个整数n、g、r,分别表示交叉路口的个数,绿灯持续的时间和红灯持续的时间。

接下来一行为n+ 1整数li,i=1, ...,n+ 1,表示公交车通过第i个路段的时间。

接下来的一行为单一的一个整数q,表示一天内从起点出发的公交车数量,接下来的一行为q个整数,表示每辆公交车离开起点的时间。

【输出形式】

输入为一行q个整数,分别表示每辆公交车到达终点的时间。

#include<iostream>using namespace std;int main(){/*n 路口g秒 通行r秒 红灯 0时刻 开始绿色路段:起点与第一个交通灯的距离 n + 1 个正整数 li,第 i 路段的时间有 q 辆公交车,第 i 辆车在时刻 ti出发输出q 个:每辆公交车到达终点的时间 */int n,g,r;cin>>n>>g>>r;int time[n+1];for(int i=0;i<=n;i++){cin>>time[i];}int q;cin>>q;int start[q],sum[q];for(int i=0;i<q;i++){//循环结合思想: 输入q个,输出q个 cin>>start[i];//针对特定的bus-isum[i]=start[i];for(int j=0;j<n+1;j++){sum[i]+=time[j]; //第一段为例 if(j==n) break;//第n+1段 if(sum[i]%(g+r)>=g){sum[i]+=((g+r)-sum[i]%(g+r));}}cout<<sum[i]<<" ";}//return 0;}

如果觉得《快速公交(BRT)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。