华为 · 计算几何 · 算法编程题
华为 计算几何 时限 3 秒 / 256 MB

题目描述

在一个前沿的材料科学研究中,您需要分析一种新型二维晶体材料的能量存储特性。
该晶体可以被建模为一个 N × M 的矩阵 P ,其中每个元素 P_ij 代表在坐标 (i, j) 处的 势能 。
当某个位置的势能低于其所有可能的逃逸路径上的最低势能壁垒时,该位置就可以被视为一个 能量阱 ,能够存储能量。
晶体矩阵的外部空间被定义为势能恒为 0 的区域。
对于晶体中的任意一点 (i, j) ,其 逃逸势能 P_escape(i, j) 定义为从该点移动到晶体外部的所有可能路径中,路径上遇到的最高势能的最小值。
该点能够存储的能量 E_trap(i, j) 为:
[ E_trap(i, j) = max(0, P_escape(i, j) - P_ij) ]
您的任务是计算整个晶体材料能够存储的总能量 E_total ,即所有能量阱存储能量的总和:
[ E_total = Σ_i=1^N Σ_j=1^M E_trap(i, j) ]

输入输出

输入描述
第 1 行 : 输入两个整数 M 和 N ,分别代表晶体矩阵的宽度(列数)和高度(行数)。
其中 M, N ∈ [1, 300] 。
第 2 行到第 N+1 行 : 描述了 N × M 的势能矩阵 P 。
每行包含 M 个整数,代表该行各点的势能。
每个势能值 P_ij ∈ [-500, 8000] 。
输出描述
输出一个整数,代表整个晶体能够存储的总能量 E_total 。

样例共 3 组

样例 1
输入
4 5
0 2 3 4
2 -1 -1 4
2 0 -1 3
4 4 4 4
4 0 0 1
输出
11
样例 2
输入
1 1
-10
输出
10
样例 3
输入
4 4
0 2 3 4
2 0 0 4
2 0 0 3
4 4 4 4
输出
8

算法解析依据一般

考点:计算几何

限制 3 秒 / 256MB | 标准输入输出

题目画像

  • 源站时限:3 秒(牛客口径,非本题专属门槛)

解题思路

参考方向:计算几何

把几何关系转成坐标运算,用整数运算避免浮点误差。

思路框架(计算几何 通法 · 非本题专属)

  1. 把点、向量、线段用坐标表示。
  2. 几何判定(平行、垂直、共线、相交)尽量用叉积/点积的整数形式:叉积为 0 即共线。
  3. 距离用平方比较,避免开方带来的浮点误差。
  4. 面积用叉积(鞋带公式)计算。

实现要点:叉积 cross = x1*y2 - x2*y1;用它判断顺时针/逆时针和共线。

复杂度:时间 O(n) ~ O(n²) | 空间 O(n)

该范式的通法易错点

  • 用浮点相等判断几何关系(应用整数叉积)。
  • 没考虑三点共线、重合等退化情况。
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。

样例

样例 1

  • 输入:4 5 / 0 2 3 4 / 2 -1 -1 4 / 2 0 -1 3 / 4 4 4 4 / 4 0 0 1
  • 输出:11

样例 2

  • 输入:1 1 / -10
  • 输出:10

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

本题来源:2025年秋招-华为-11月06号留学生开发岗。

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