红绿灯

链接:https://ac.nowcoder.com/acm/evaluate/392/D
来源:牛客网

题目描述

牛客公司的大门前开通了一条新的道路,长L米。牛客公司为了更好的管理这条道路,将道路平均划分为L段,并用L+1个点来标注每个位置,并设置了很多红绿灯。如果位置i处有红绿灯,则意味着位置i处的汽车必须等到绿色才能向前前进.交通信号灯只有红色或绿色,每5秒钟更换一次。
有一些车在等待进入这条路,每辆车长1米,在道路的同一个位置上不会有两辆车同时存在。一旦汽车进入了这条路,它就无法超越其他的车辆。每个红绿灯都以红色开始,但第一个红灯的持续时间在1-5秒之间变化,包括1和5秒。然后五秒钟的循环就会开始。对于每个交通灯,初始红灯的持续时间可以不同。
假设道路从左到右,汽车的移动如下:
第一步:已经在路上的(从左到右)的每辆车都试图向右移动,但是它可以被另一辆车或红灯阻挡(类似坐标轴,汽车向右意味着坐标增加)。
               如果道路的位置0是空的,则还没有进入道路的汽车进入位置0,但不进行移动。
第二步:更新红绿灯,这一步没有时间。
第三步:如果所有的车辆都已经离开了道路,模拟停止,否则请转到第一步。
请你确定每个红绿灯第一个红灯的持续时间,最大限度地减少所有汽车离开道路的时间。

输入描述:

输入包括五行:
第一行输入一个正整数L,表示道路的长度。
第二行输入一个正整数n,表示汽车的数量。
第三行输入n个正整数,表示每辆汽车的速度。
第四行输入一个正整数m,表示灯的数量。
第五行输入m个正整数,表示每个灯的位置。

输出描述:

输出包括一行,包括一个正整数,表示所有汽车离开道路所需的最短时间。
	
1≤L≤5001 \leq L \leq 5001L500
1≤n≤301 \leq n \leq 301n30
1≤汽车的速度≤301 \leq 汽车的速度 \leq 30130
0≤红绿灯的位置≤L−20\leq 红绿灯的位置\leq L-20绿L2
示例1

输入

复制
50
1
1
5
4 5 6 7 8

输出

复制
1 2 3 4 5

说明

第1秒:路上最初没有车辆,由于位置0是空的,所以汽车能够进入道路。
第2秒:红绿灯开始变绿,汽车可以向右移动到位置1。
第10秒:汽车从位置8移动到位置9(道路的最后一个位置)。
第11秒:汽车全部离开了公路。
示例2

输入

复制
300
2
2 1
1
16

输出

复制
4

说明

当第一个红灯的持续时间是4秒时,所有的车都不会被红灯挡住。
示例3

输入

复制
300
2
1 2
1
16

输出

复制
3

说明

虽然第二辆车必须等待红绿灯1秒,但速度足以赶上第一辆。
全部评论

相关推荐

zephory:内容太乱了,根本捕捉不到重点,指导你会的很多,但是看不到具体的强项 个人技能宜精不宜多 项目那块太繁琐了,面试官或者hr只想知道你在项目中看了啥以及具体的收益
点赞 评论 收藏
分享
09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务