美团 · 图 · 算法编程题
美团 n ≤ 1e3 时限 5 秒 / 256 MB

题目描述

在一个奇幻王国里,有 n 个城市(编号依次为 1 到 n )和 m 条双向道路,第 i 条道路连接城市 u_i 和 v_i ,基础通行时间为正整数 w_i 。此外,王国中每个城市都存在 1 个中枢魔法石,每个魔法石有一个能量值,非负能量值的魔法石称之为「坏魔法石」,负数能量值的魔法石称之为「好魔法石」,坏魔法石会增加通行所需时间,好魔法石会减少通行所需时间(增加和减少的时间即为能量值的多少),如果好魔法石足够强力,甚至可以实现时间倒流。
坏魔法石将会强制生效,导致基础通行时间增加,无法被控制。
好魔法石可以控制,选择是否生效,但使用好魔法石的总次数存在限制,第 k 次使用好魔法石生效以后,之后将无法利用任何城市的好魔法石来减少通行时间。换句话说,单次行程中好魔法石总使用次数不超过 k 次。
魔法石不会消失,可以多次使用。
当你从城市 u 前往城市 v 时,路径的实际通行时间计算如下:
通行时间 = 城市 u 到城市 v 的道路基础通行时间加上城市 v 生效的魔法石能量值。
请计算从城市 1 到城市 n 的最小实际通行时间,注意,您可以重复经过城市和道路。特别地,如果无论如何都无法到达城市 n ,直接输出 NO 。

输入输出

输入描述
第一行输入三个整数 n,m,k (2 ≤ n ≤ 10^3; 1 ≤ m ≤ min\2 × 10^3,(n × (n-1)/2); 1 ≤ k ≤ 10^3) 。
第二行输入 n 个整数 a_1,a_2...,a_n (-10^5 ≤ a_i ≤ 10^5) ,其中 a_i 表示第 i 个城市的魔法石能量。
接下来 m 行,第 i 行输入三个整数 u_i,v_i,w_i (1 ≤ u_i,v_i ≤ n; u_i ≠ v_i; 1 ≤ w_i ≤ 10^5) ,表示城市 u_i 与城市 v_i 之间存在一条通行时间为 w_i 的路径。除此之外,保证任意两个城市间至多存在一条道路。
注意,本题不保证图的连通性,即可能存在两个城市无法通过任何路径互相到达的情况。
输出描述
如果无论如何都无法到达城市 n ,直接输出 NO ,否则输出一个整数,表示从城市 1 到城市 n 的最小实际通行时间。

样例共 1 组

样例 1 · 在这个样例中,唯一的最优走法是, 1 → 2 → 3 → 5 → 4 → 5 → 4 → 5 ,实际通行时间为 1+1+1+(1-10)+1+(1-10)+1 。
输入
5 5 2
0 0 0 -10 0
1 2 1
2 3 1
3 5 1
1 4 6
4 5 1
输出
-13

算法解析依据充分

考点:图 · 堆 · 动态规划

数据规模 n ≤ 1e3 | 限制 5 秒 / 256MB | 标准输入输出

题目画像

  • 数据规模:n ≤ 1e3,k ≤ 1e3
  • 元素值域:a_i ≤ 1e5,w_i ≤ 1e5(注意整数类型选择,避免溢出)
  • 复杂度门槛:允许 O(n²);若 n ≤ 300,O(n³) 通常也跑得动,需看具体常数。
  • 源站时限:5 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:图

把关系抽象成点与边,再按问的类型选遍历/最短路/连通性算法。

思路框架(图 通法 · 非本题专属)

  1. 建图:邻接表(稀疏)或邻接矩阵(稠密)。
  2. 问「最少几步 / 最短路径」且边权为 1 → BFS。
  3. 问「是否连通 / 需要加几条边连通」→ 并查集 / 连通块计数。
  4. 问「带权最短路」→ Dijkstra(非负权)或 Floyd(点数小、多源)。
  5. 问「依赖顺序」→ 拓扑排序。

实现要点:注意是有向图还是无向图,无向图加边记得双向。

复杂度:时间 O(V+E) 遍历 / O(E log V) Dijkstra | 空间 O(V+E)

该范式的通法易错点

  • 无向图只加了单向边。
  • BFS 入队时没标记访问,导致重复入队。

对照本题

  • 数据规模 n ≤ 1e3,允许 O(n²);若 n ≤ 300,O(n³) 通常也跑得动,需看具体常数。
  • 元素值域最大到 1e5 —— 求和 / 相乘时记得开 64 位整数。

题目给出的提示

  • 您可以重复经过城市和道路。特别地,如果无论如何都无法到达城市 n ,直接输出 NO

样例解读

样例 1:输入 5 5 2 / 0 0 0 -10 0 / 1 2 1 / 2 3 1 / 3 5 1 / 1 4 6 / 4 5 1 → 输出 -13

在这个样例中,唯一的最优走法是, 1 → 2 → 3 → 5 → 4 → 5 → 4 → 5 ,实际通行时间为 1+1+1+(1-10)+1+(1-10)+1 。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2025年秋招-美团-算法策略端-第二批笔试。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解