1 条题解

  • 0
    @ 2026-6-19 10:30:53

    📝 题目大意

    给定 MM 种营养素的每日目标摄取量 AiA_i,以及 NN 种食品中每种营养素含量 Xi,jX_{i,j}。判断将所有食品摄取的每种营养素分别求和后,是否每种营养素都达到了目标摄取量。

    💡 解题思路

    1. 题目分析:本质是对 NN 个长度为 MM 的数组按列求和,再逐列与目标值比较。数据范围 N,M100N, M \leq 100Ai,Xi,j107A_i, X_{i,j} \leq 10^7,总和最大为 100×107=109100 \times 10^7 = 10^9,仍在 int 范围内(23112.1×1092^{31}-1 \approx 2.1 \times 10^9),无需使用 long long

    2. 算法推导

      • 首先读入 NNMM,再读入 target 数组(长度 MM),即每种营养素的目标值。
      • 建立一个长度为 MM 且初始值全为 00total 数组,用于累加每种营养素的总摄入量。
      • 遍历 NN 种食品,对于每种食品,读入其 MM 个营养素含量 xx,并累加到 total[j] 上。
      • 最后遍历 total 数组,检查是否存在某个营养素 jj 满足 total[j] < target[j]。若存在,则输出 "No";若全部达标,则输出 "Yes"
    3. 边界与细节

      • NNMM11 时算法依然正确,无需特殊处理。
      • AiA_iXi,jX_{i,j} 可能为 00,此时 total[j] 也可能为 00,比较逻辑 total[j] < target[j] 依然正确。
      • 由于 N×M10000N \times M \leq 10000,直接双重循环不会超时。
      • 输入量较大时建议关闭同步流或使用 scanf,但本题数据较小,cin 足够。

    ⏱️ 复杂度分析

    • 时间复杂度:读入 MM 个目标值 O(M)O(M),读入 N×MN \times M 个营养素值并累加 O(NM)O(NM),最后检查 MM 个营养素 O(M)O(M),总体为 O(NM)O(NM)
    • 空间复杂度target 数组和 total 数组各占用 O(M)O(M) 空间,读入的 xx 为临时变量,总体为 O(M)O(M)

    💻 标准代码 (C++)

    #include <iostream>
    #include <vector>
    using namespace std;
    int main() {
        int N, M;
        cin >> N >> M;
        // 读入每种营养素的目标摄取量
        vector<int> target(M);
        for (int i = 0; i < M; i++) {
            cin >> target[i];
        }
        // total[j] 表示第 j 种营养素的总摄入量,初始为 0
        vector<int> total(M, 0);
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                int x;
                cin >> x;           // 第 i 种食品中第 j 种营养素的含量
                total[j] += x;      // 累加到总摄入量
            }
        }
        // 检查是否每种营养素都达标
        bool ok = true;
        for (int j = 0; j < M; j++) {
            if (total[j] < target[j]) { // 存在未达标的营养素
                ok = false;
                break;
            }
        }
        cout << (ok ? "Yes" : "No") << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    810
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者