P1085 [NOIP 2004 普及组] 不高兴的津津

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式

输入包括 7 行数据,分别表示周一到周日的日程安排。每行包括两个小于 10 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式

一个数字。如果不会不高兴则输出 0,如果会则输出最不高兴的是周几(用 1,2,3,4,5,6,7 分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

输入输出样例

输入 #1复制

5 3
6 2
7 2
5 3
5 4
0 4
0 6

输出 #1复制

3

说明/提示

NOIP2004 普及组第 1 题

  • 2021-10-27:增加一组 hack 数据
  • 2022-06-05:又增加一组 hack 数据

以下是解决该问题的 C++ 代码:


#include <iostream>
using namespace std;

int main() {
    int maxDay = 0;  // 最不高兴的天数,初始为 0 表示不会不高兴
    int maxHours = 0;  // 最不高兴那天的上课总时长

    // 遍历周一到周日
    for (int i = 1; i <= 7; ++i) {
        int schoolHours, extraHours;
        cin >> schoolHours >> extraHours;
        int totalHours = schoolHours + extraHours;  // 计算当天上课总时长

        // 如果当天上课总时长超过 8 小时且比之前最不高兴那天时长还长
        if (totalHours > 8 && totalHours > maxHours) {
            maxDay = i;
            maxHours = totalHours;
        }
    }

    cout << maxDay << endl;
    return 0;
}

代码解释

  1. 变量初始化maxDay 用于记录最不高兴的天数,初始化为 0 表示不会不高兴;maxHours 用于记录最不高兴那天的上课总时长,初始化为 0。
  2. 遍历日程:使用 for 循环遍历周一到周日,每次读取当天在学校上课的时间和妈妈安排上课的时间,计算当天上课总时长。
  3. 判断是否不高兴:如果当天上课总时长超过 8 小时,并且比之前记录的最不高兴那天的时长还长,就更新 maxDay 和 maxHours
  4. 输出结果:最后输出 maxDay

复杂度分析

  • 时间复杂度:$O(7)$,因为只需要遍历 7 天,可看作 $O(1)$。
  • 空间复杂度:$O(1)$,只使用了固定的几个变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芙宁娜的狗是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值