冒险村物语 站外题求解 谢谢神犇
  • 板块灌水区
  • 楼主jerrybrown
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/16 20:58
  • 上次更新2023/10/27 19:58:30
查看原帖
冒险村物语 站外题求解 谢谢神犇
750986
jerrybrown楼主2022/7/16 20:58

给你两个下标从 0 开始 的整数数组 warriors 和 mosters,长度分别为 n​​​​​​ 和 m​​​​​​ 。warriros[i] 是第 i​​​​​​​​​​ 名勇士被怪兽的克制系数 ,而 monsters[j] 是打败第 j​​​​​​ 个怪物所需要的时间(单位:天)。

鉴于前方战火紧急,而且勇士分身乏术,每次只能同时攻击一个怪物,而且开始选择打一个怪物之后是不能停下来的。每天都会按照顺序生成一只怪物,第 0 只怪物从第 0 天出现(在此之前无法被攻击),第 j 名怪物在第 j 天出现。开始攻击第 j 名怪物时,你必须选择一个被怪兽的克制系数最小的无任务勇士(没有正在打其他怪),如果存在多个被怪兽的克制系数相同的勇士,就选择下标最小的那一个。如果一个空闲勇士在 t 时刻去打一个怪物,那么在 t + monsters[j] 的时刻他就已经击败了怪物,并且可以在当天开始攻击下一只。

如果没有空闲的勇士,那么怪物就不会被人攻击,直到一个空闲的勇士忙完其他怪物,就会马上来攻击剩余的怪物。因为怪物很恐怖,待的时间久了会变异,如果有多个怪物需要被清除,那么就先打来的早的怪物。

如果同一时刻存在多个空闲的勇士,可以同时将多项打怪任务分别分配给它们。

构建长度为 m 的答案数组 ans ,其中 ans[j] 是第 j 个怪物分配的勇士的下标。

返回答案数组 ans​​​​ 。

输入格式 第一行输入两个数字 m 和 n

第二行输入 m 个数字,分别是每个勇士的被怪兽的克制系数

第三行输入 n 个数字,分别是每个怪物被消灭需要的时间

输出格式 共 1 行,n个数字,分别是每个怪物最终是被哪个勇士消灭的,输出勇士下标

样例 #1 样例输入 #1 3 6 3 3 2 1 2 3 2 1 2 样例输出 #1 2 2 0 2 1 2 样例解释 #1

  • 0 天时,第 0 只怪物出现,被 2 号勇士打败(打到 1 天)。
  • 1 天时,2 号勇士打完了之前的怪,第 1 只怪物出现,被 2 号勇士打败(打到 3 天)。
  • 2 天时,第 2 只怪物出现,被 0 号勇士打败(打到 5 天)。
  • 3 天时,2 号勇士打完了之前的怪,第 3 只怪物出现,被 2 号勇士打败(打到 5 天)。
  • 4 天时,第 4只怪物出现,被 1 号勇士打败(打到 5 天)。
  • 5 天时,所有勇士都空闲,第 5 只怪物出现,被 2 号勇士打败(打到 7 天)。 对于 40% 的数据来说:

warriors.length == n monsters.length == m 1 <= n, m <= 2000 1 <= warriors[i], monsters[j] <= 2000

对于 100% 的数据来说:

warriors.length == n monsters.length == m 1 <= n, m <= 2 * 10^5 1 <= warriors[i], monsters[j] <= 2 * 10^5

2022/7/16 20:58
加载中...