1 条题解

  • 0
    @ 2025-4-7 23:37:26

    题意分析

    1. 问题背景

      • 一家高级货物运输有限公司有一个大型仓库,存储多种货物。
      • 仓库有 BB 个货位(1B10001 \leq B \leq 1000)。
      • 货物类型有 GG 种(1G1,000,0001 \leq G \leq 1,000,000)。
      • 每天有 NN 辆卡车(1N1,000,0001 \leq N \leq 1,000,000)来装载货物,每辆卡车仅装载一种类型。
    2. 操作规则

      • 管理员提前将货物搬运到货位,但无法预知每辆卡车的具体需求,因此会准备比实际需求更多的货物。
      • 如果当前卡车装载的货物类型与前一辆相同,则无需重新搬运货物(节省操作)。
      • 每个货位可以服务任意数量的卡车,只要货物类型相同。
      • 目标:最小化“LOAD”操作次数(即搬运货物到货位的次数)。
    3. 输入格式

      • 第一行:测试用例数量 TT
      • 每个测试用例:
        • 第一行:BB(货位数)、GG(货物类型数)、NN(卡车数)。
        • 接下来 NN 行:每行一个整数 tit_i(第 ii 辆卡车的货物类型)。
    4. 输出格式

      • 每个测试用例:
        • 第一行:Case X:XX 为测试用例编号)。
        • 接下来 NN 行:
          • NO ACTION(当前货物已在货位上)。
          • LOAD b g(将货物 gg 搬运到货位 bb)。
      • 不同测试用例之间用空行分隔。

    解题思路

    1. 数据结构

      • 使用数组 bay[B] 记录每个货位存放的货物类型(初始化为 1-1)。
    2. 处理每辆卡车

      • 对于卡车 ii 的货物 tit_i
        • 检查是否已有货位存放 tit_i
          • 如果有,输出 NO ACTION
        • 否则
          • 优先使用空货位bay[j] == -1)。
          • 若无空货位,则替换一个已有货物的货位(如第一个货位)。
          • 输出 LOAD b t_ibb 为货位编号)。

    标程(C++)

    
    

    • 1

    信息

    ID
    794
    时间
    1000ms
    内存
    30MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者