ABC356B Nutrients
题目分析¶
Takahashi 吃了 $N$ 种食物,每种含有 $M$ 种营养素的不同量。现在给定每种营养素的最低需求,判断他是否摄取全部达标。
解题思路¶
我们需要统计每种营养素的总摄入量,并将其与目标值对比。只要有一种营养素摄入不足,就输出 No
,否则输出 Yes
。
实现步骤¶
- 读取整数 $N$ 和 $M$。
- 读取 $M$ 个整数作为目标需求数组
target[i]
。 - 初始化一个数组
sum[]
来存每种营养素的总摄入量,初始为 $0$。定义全局数组自动实现 - 遍历每一行食物的营养数据,累加到对应的
sum[j]
。- 对每个 $j$,执行
sum[j] += X[i][j]
。
- 对每个 $j$,执行
- 遍历所有 $M$ 个营养素,如果有
sum[j] < target[j]
,输出No
。 - 全部满足则输出
Yes
。
复杂度分析¶
- 时间复杂度:$O(N \times M)$;
- 空间复杂度:$O(M)$;
- 数据范围小($N,M\le 100$),暴力处理可行。
总结¶
- 本题核心在于 列累加统计;
- 遇到矩阵类数据,注意是 按列统计 而非行;
- 明确目标是 所有营养素都达标,所以需要全体通过的判断。