1 条题解

  • 0
    @ 2025-5-9 14:45:32

    题意分析

    1. 任务核心
      • 分析津津在给定天数内的学习时间,判断她是否会不开心(学习时间超过8小时)。
      • 如果不开心,找出最不开心的那一天(学习时间最长的一天)。
    2. 输入输出要求
      • 输入:多组测试用例,每组第一行是天数 N N 1N7 1 \leq N \leq 7 ),接下来 N N 行每行两个非负整数(小于10),分别表示学校学习时间和补习班学习时间。
      • 输出:若每天学习时间都不超过8小时,输出 0;否则输出最不开心的那一天的序号。

    解题思路

    1. 数据处理
      • 读取输入的天数 N N
      • 对于每一天,读取学校学习时间 a a 和补习班学习时间 b b ,并计算当天总学习时间 a+b a + b
    2. 比较与记录
      • maxvalue 记录当前最大的总学习时间,初始值设为 -1(因为学习时间非负)。
      • maxday 记录最大总学习时间对应的天数。
      • 遍历每一天,若当天总学习时间大于 maxvalue,则更新 maxvaluemaxday
    3. 结果输出
      • 遍历结束后,判断 maxvalue 是否小于等于8。
      • maxvalue 小于等于8,输出 0,表示津津每天都开心。
      • 否则,输出 maxday,表示津津最不开心的那一天。

    示例代码(标准程序)

    #include <stdio.h>
    
    int main() {
        while (1) {
            int i, n;
            int maxday, maxvalue = -1;
            scanf("%d", &n);
            if (n == 0) break;
    
            for (i = 1; i <= n; i++) {
                int a, b;
                scanf("%d%d", &a, &b);
                if (a + b > maxvalue) {
                    maxvalue = a + b;
                    maxday = i;
                }
            }
    
            if (maxvalue <= 8) printf("0\n");
            else printf("%d\n", maxday);
        }
        return 0;
    }
    

    注意事项

    1. 输入处理
      • 循环读取多组测试用例,每组测试用例以 N=0 N = 0 结束。
      • 确保输入的 N N 在有效范围内(1N7 1 \leq N \leq 7 )。
    2. 变量初始化
      • maxvalue 初始化为 -1,确保第一天的学习时间能正确更新 maxvalue
    3. 输出格式
      • 严格按照题目要求输出,注意 0 和具体天数的输出格式。

    复杂度分析

    1. 时间复杂度
      • 对于每组测试用例,需要遍历 N N 天,每次遍历进行简单的加法和比较操作,时间复杂度为 O(N) O(N)
      • 整体时间复杂度取决于测试用例的数量和每组测试用例的天数,假设测试用例数量为 T T ,则总时间复杂度为 O(TN) O(TN)
    2. 空间复杂度
      • 程序只使用了几个固定的变量,如 inmaxdaymaxvalueab 等,空间复杂度为 O(1) O(1)
    • 1

    信息

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