zoukankan      html  css  js  c++  java
  • 海康威视复赛题

    题目概述

    在车库中安排若干泊车机器人,根据给定的车位地图,合理优化机器人的数量及其运动路径,尽量减少客户在停车和取车中的等待时间,并使总成本最小。

    参数设定

    为了简化问题,我们对泊车机器人的实际运行情况做出如下规定和说明,与“题目背景”中所述的泊车机器人真实运行情况有所不同,请注意。

    地图说明:

    给定一个停车地图,以下图为例:地图中红色部分表示车位(P),黑色部分表示障碍物(B),黄色部分表示入口(I),绿色部分表示出口(E),白色表示行车道路(X),每个车位都与行车道路(X)相邻,每个车位(P)只能停一辆车。

    1.泊车机器人必须能到达每个车位;

    2.每个车位有且只有一个入口, 即每个红色区域旁边有且只有一个白色区域;

    3.出口和入口各只有一个,且不重合,分布在地图边缘,泊车机器人从入口和出口都能到达每个车位。

    topic_01.jpg

    泊车机器人说明:

    1.泊车机器人(R)运行速度为每秒一个格,且只能向前、后、左、右移动,不能沿对角线移动。

    2.泊车机器人不论在载车还是空车状态,都不能穿过图例中黑色区域(B);且只能由白色区域(X)进入到红色区域(P),或相反;不能在红色区域(P)之间移动。比如,上图图例中左上角, 允许3->1和1->3,但不允许1->2。

    3.泊车机器人在空闲的时候,可以行驶到任何位置(除了B区域)。

    4.泊车机器人不论是空车还是载车状态都不能同时出现在一个格子中(入口和出口处不受限制),即不能相遇,不能相撞,存在碰撞体积。

    5.假设泊车机器人空载时耗能极少可忽略不计,载车时能耗(W)与车的质量(m)以及行驶里程(S)相关,W=k*m*S,k为能耗系数。

     

    车辆说明:

    1.每辆车(C)都有申请进入时间(T-in)、申请离开时间(T-out)、实际进入时间(T-in')、实际离开时间(T-out')、最长等待时间(t)、车的质量(m,m≤2000)。

    2.申请进入时间(T-in)表示车辆到达时间,实际进入时间(T-in')为泊车机器人从入口处把车辆接走的时间点;申请离开时间(T-out)表示客户取车的时间点,实际离开时间(T-out')表示泊车机器人把车辆搬到出口的时间点;若(T-in')>(T-in)+(t),则客户放弃停车。

    3.每辆车的等待时间(T1)=(T-in')-(T-in)+(T-out')-(T-out);若发生客户放弃停车的情况,需要对每辆被放弃的车辆增加罚时(p),总罚时(T2)=罚时系数(p)*放弃停车车辆数(q)。(注:放弃停车的车辆的等待时间,不计算到T1,该车不会停到车库里面,因此也不用规划路径,只需要计入T2即可)

     

    题目说明

    现有一批车辆需要停到车库中,请设计一个合理的停车方案,使Z最小。 Z =a*n+T+W。

    n为泊车机器人个数,a为系数;T=bT1+T2, b为系数;W为总能耗。具体公式为 Z = n*a + b*∑T1 + p*q + k*∑m*s

     

    输入

    1.从标准输入 输入的数据以空格分隔,每行以换行符(‘ ’)结尾。

    2.格式:

    能耗系数k 罚时系数p 泊车机器人系数a 客户停车等待系数b

    停车库宽w 停车库高h

    接下来是一个w*h的二维数组, 数组中P表示车位,B表示障碍物,I表示入口,E表示出口,X表示过道

    车辆数目N

    1 申请入库时间点 申请出库时间点 最大等待时间 车的质量

    2

    3

    .

    .

    N 申请入库时间点 申请出库时间点 最大等待时间 车的质量

    说明:

    a.所有输入都是不小于0的整数,且不大于100000,地图宽高都不大于100,车辆数N不大于5000

    b.为了方便计算,时间点都是归一化时间,即从0开始,依次增加

    c.机器人行驶里程说明,例如示例图中车辆从入口4到停车位6,它的行驶路程为4->5->6,那么它的里程数为2

     

    输入示例:

    1 800 400 5 //能耗系数k:1, 罚时系数p:800, 泊车机器人系数a:400,等待系数b:5

    6 6 // 地图宽高都为6

    X X X X X X

    X B P P P P

    X X B B B B

    X X X X X E

    X X X X X X

    I B P P B B

    4 // 车辆数为4

    1 0 42 20 10 // 车辆编号为1,申请进入时间点为0,申请离开时间点42,最大等地时间20,质量为10,即车辆如果在0+20这个时间点还没有被接走,就表示该车放弃泊车。

    2 3 45 15 15

    3 10 64 10 11

    4 25 60 20 12

    输出

    1.标准输出,输出的数据以空格分隔,每行以换行符(‘ ’)结尾。

    2.输出格式:

    首先判断给的用例地图是否有效(判断依据见地图说明),

    如果地图无效则:NO

    文件结束

    如果地图有效:YES

    泊车机器人个数n 所有车的等待时间T(b*T1+T2) 所有泊车机器人的总能耗W处理完当前case所用的经历时间M(指最后一辆车离开车库的时间,相当于这个时间点后,没有车入库了,程序运行结束)

    接下来M +1行,

    0 (机器人编号0,当前位置X, 当前位置Y, 车辆编号(空载时为0)) 。。。(机器人编号n-1,当前位置X, 当前位置Y, 车辆编号(空载时为0))

    1 (机器人编号0,当前位置X, 当前位置Y, 车辆编号(空载时为0)) 。。。(机器人编号n-1,当前位置X, 当前位置Y, 车辆编号(空载时为0))

    .

    M (机器人编号0,当前位置X, 当前位置Y, 车辆编号(空载时为0)) 。。。(机器人编号n-1,当前位置X, 当前位置Y, 车辆编号(空载时为0))

    如果机器人个数为0,那么M为0,输出结束。如下:

    YES

    0 3200 0 0

    输出示例:

    YES

    2 175 714 79

    0 (0,5,0,1) (1,5,0,0)

    1 (0,4,0,1) (1,5,0,0)

    2 (0,4,1,1) (1,5,0,0)

    3 (0,4,2,1) (1,5,0,2)

    4 (0,5,2,1) (1,4,0,2)

    5 (0,4,2,0) (1,3,0,2)

    6 (0,4,1,0) (1,2,0,2)

    7 (0,4,0,0) (1,1,0,2)

    8 (0,5,0,0) (1,0,0,2)

    9 (0,5,0,0) (1,0,1,2)

    10 (0,5,0,3) (1,0,2,2)

    11 (0,4,0,3) (1,1,2,2)

    12 (0,3,0,3) (1,1,2,0)

    13 (0,2,0,3) (1,1,2,0)

    14 (0,1,0,3) (1,1,2,0)

    15 (0,0,0,3) (1,1,2,0)

    16 (0,0,1,3) (1,1,2,0)

    17 (0,0,2,3) (1,1,2,0)

    18 (0,0,3,3) (1,0,2,0)

    19 (0,1,3,3) (1,0,1,0)

    20 (0,0,3,0) (1,0,0,0)

    21 (0,0,2,0) (1,1,0,0)

    22 (0,1,2,0) (1,2,0,0)

    23 (0,1,2,0) (1,3,0,0)

    24 (0,1,2,0) (1,4,0,0)

    25 (0,1,2,0) (1,5,0,4)

    26 (0,1,2,0) (1,4,0,4)

    27 (0,1,2,0) (1,4,1,4)

    28 (0,1,2,0) (1,4,2,4)

    29 (0,1,2,0) (1,4,3,4)

    30 (0,1,2,0) (1,5,3,4)

    31 (0,1,2,0) (1,4,3,0)

    32 (0,1,2,0) (1,4,2,0)

    33 (0,1,2,0) (1,5,2,0)

    34 (0,1,2,0) (1,5,2,0)

    35 (0,1,2,0) (1,5,2,0)

    36 (0,1,2,0) (1,5,2,0)

    37 (0,1,2,0) (1,5,2,0)

    38 (0,1,2,0) (1,5,2,0)

    39 (0,1,2,0) (1,5,2,0)

    40 (0,1,2,0) (1,5,2,0)

    41 (0,1,2,0) (1,5,2,0)

    42 (0,1,2,0) (1,5,2,1)

    43 (0,1,2,0) (1,4,2,1)

    44 (0,1,2,0) (1,4,3,1)

    45 (0,1,2,2) (1,4,4,1)

    46 (0,0,2,2) (1,4,5,1)

    47 (0,0,1,2) (1,3,5,1)

    48 (0,0,0,2) (1,3,4,0)

    49 (0,1,0,2) (1,3,3,0)

    50 (0,2,0,2) (1,3,2,0)

    51 (0,2,1,2) (1,3,1,0)

    52 (0,3,1,2) (1,3,0,0)

    53 (0,3,2,2) (1,2,0,0)

    54 (0,3,3,2) (1,1,0,0)

    55 (0,3,4,2) (1,0,0,0)

    56 (0,3,5,2) (1,0,1,0)

    57 (0,4,5,0) (1,0,2,0)

    58 (0,4,4,0) (1,0,3,0)

    59 (0,4,3,0) (1,1,3,0)

    60 (0,5,3,4) (1,1,3,0)

    61 (0,4,3,4) (1,1,3,0)

    62 (0,4,4,4) (1,1,3,0)

    63 (0,4,5,4) (1,1,3,0)

    64 (0,3,5,4) (1,1,3,0)

    65 (0,3,5,0) (1,1,3,0)

    66 (0,3,5,0) (1,1,3,0)

    67 (0,3,5,0) (1,1,3,3)

    68 (0,3,5,0) (1,0,3,3)

    69 (0,3,5,0) (1,0,2,3)

    70 (0,3,5,0) (1,0,1,3)

    71 (0,3,5,0) (1,0,0,3)

    72 (0,3,5,0) (1,1,0,3)

    73 (0,3,5,0) (1,2,0,3)

    74 (0,3,5,0) (1,2,1,3)

    75 (0,3,5,0) (1,3,1,3)

    76 (0,3,5,0) (1,3,2,3)

    77 (0,3,5,0) (1,3,3,3)

    78 (0,3,5,0) (1,3,4,3)

    79 (0,3,5,0) (1,3,5,3)

    补充说明

    1.泊车机器人初始位置都在入口I处。

    2.泊车机器人在没有收到申请出库之前不能在车位上搬运汽车。即车一旦到达车位后,只有收到离开命令后才能搬运。

    3.同时申请入库(出库)的车辆顺序由机器人决定,不同时间的先申请先处理。申请入库和出库之间没有时间关系(例:A先申请入库,B后申请出库,机器人可以先执行B,再执行A)。补充:评判程序对于出库的先后顺序不做判断。

    4.车位有空的情况下,泊车机器人空闲时且入口有车辆等待入库,不能拒载。补充:评判程序对于拒载不做判断,根据自己需要可以选择合适的车辆。

    5.编程所使用的语言为C,C++,JAVA;不能使用第三方开源库,也不能使用操作系统的特效函数。

    6.如果总共12个case,所有的case机器人数目为1,或者0的答案视为无效。只要有一个大于1就有效。case的机器人价格可能会很低

    7.特别说明,注意代码规范,代码注释。进入总决赛者需要必要的文档,PPT,流程图等说明,

    8.由于行驶过程中可以等待,因此用例无法保证每辆车都能入库,即有可能出现还没到车位就收到出库命令,这个时候,可以直接搬运到出口。但是到车位后,必须收到出库命令才能搬运,这点与补充说明2保持一样

    9.运行环境

    硬件环境:至强E5 2650 V4 8核心;

    最大内存:2G;

    运行时间:100S以内

    GCC版本:4.8.2

    JAVA版本:JDK 1.7.0_80

    示例展示

    topic_02.jpg

    K=1, p=80,a=400,b=5

    topic_03.jpg

    一种策略如下:

    topic_04.jpg

    QQ截图20170620164055.png

    对于该策略,用了一辆泊车机器人,时间T = 120+90+110 =400, 能耗W =200+120+96=416。这个策略得到的Z不一定是最小的,因此现在需要参赛者提供的程序能够针对不同的比赛用例,给出Z最小即可,即不存在标准答案,参赛者给出自认为可行的方案即可。

  • 相关阅读:
    .37-浅析webpack源码之事件流make(4)
    .36-浅析webpack源码之Parser类
    .35-浅析webpack源码之babel-loader入口文件路径读取
    .34-浅析webpack源码之事件流make(3)
    浅探element-ui2组件源码之upload
    .33-浅析webpack源码之doResolve事件流(5)
    .32-浅析webpack源码之doResolve事件流(4)
    .31-浅析webpack源码之doResolve事件流(3)
    .30-浅析webpack源码之doResolve事件流(2)
    windows server 2016 支持多用户远程登录
  • 原文地址:https://www.cnblogs.com/wlzy/p/7096182.html
Copyright © 2011-2022 走看看