仓库地址:
有想法但是还没打出来,就说一下我的思路
思路:
想要时间最优,那电梯最好能同时搭载同一个方向的尽可能多的人数。
- 情况一:
一个乘客请求往上,在上升过程且还未到目的地时有比他高层的另一个乘客也请求往上(方向相同),那么电梯可以到另一个乘客所在的楼层中停留接客,再将两人一同往上接送(让第二个乘客搭顺风车)。
往下方向亦是如此,多个人往同一方向也是如此。 - 情况二:
一个乘客请求往上,在上升过程且还未到目的地时有比他低层的另一个乘客也请求往上(方向相同),这时有两种选择:
1.先接送完第一个乘客后再往下去接送第二个乘客;
2.先往下接送另一个乘客后一同往上接送两位乘客;
个人认为应该时第一种选择时间最优,但还未列举数据验证。 - 情况三:
一个乘客请求往上,在上升过程且还未到目的地时有另一个乘客请求往下(方向相反),那么电梯应送完第一个乘客至目的地再往下/上至第二个乘客所在楼层接送第二个乘客。 - 情况四:
时间不重合,按请求时间顺序接送完所有乘客。
输入数据:
第一组 //数据中存在比较多时间重合,需要判断时间请求的先后顺序
0 1 0
5 8 0
10 9 1
20 3 0
26 4 1
第二组 //所有人都在一个楼层上电梯
0 1 0
0 1 0
0 1 0
0 1 0
0 1 0
输出数据:
第一组
- 11s时,在10楼,等待11s;
- 11s时,在10楼,等待6s;
- 22s时,在1楼,等待12s;
- 33s时,在10楼,等待13s;
- 43s时,在1楼,等待17s;
等待总和59s;
第二组
- 10s时,在10楼,等待10s;
- 10s时,在10楼,等待10s;
- 10s时,在10楼,等待10s;
- 10s时,在10楼,等待10s;
- 10s时,在10楼,等待10s;
等待总和50s;