Hello大家好我是小亦,本来今天是要打比赛的但是又不是很想打但是我参加了没写的话会扣等级分,哎想想就算了吧qwq,那么好今天我们来讲一下来自NOIP2004普及组真题的题目:不高兴的津津,这道题呢非常的简单,但是呢为啥很多人没过呢,很奇怪,这个是属于特水的,那话不多说思路赶紧给大家qwq:
首先呢这道题呢是要写枚举的,想了想这不是很简单吗但是正确率不是很理想,那么不废话了直接开始本人的思路大概我分为了以下8个步骤:
-
理解问题:首先,我们需要理解题目的要求。题目要求我们检查津津一周的日程安排,看是否有任何一天她的上课时间超过8小时,如果有,我们需要找出最不高兴的那一天。
-
输入处理:题目要求我们输入7行数据,每行包含两个小于10的非负整数,分别表示津津在学校上课的时间和妈妈安排她上课的时间。
-
存储数据:我们可以创建两个数组(或列表)来存储每天在学校和妈妈安排的上课时间。
-
计算总时间:对于每一天,我们需要将在学校的上课时间和妈妈安排的上课时间相加,得到总的上课时间。
-
检查是否超过8小时:对于每一天的总上课时间,我们需要检查它是否超过8小时。
-
记录最不高兴的一天:如果某一天的上课时间超过8小时,我们需要记录下这一天,并与之前记录的最不高兴的一天进行比较。如果这一天的上课时间更长,或者上课时间相同但日期更早,我们就更新记录。
-
输出结果:最后,我们输出最不高兴的那一天。如果没有一天超过8小时,我们输出0。
-
特殊情况处理:如果有两天或两天以上的上课时间相同且最长,我们需要输出时间最早的那一天。
好了说完了那就赶紧公布代码吧,小亦再次提醒超代码可耻,
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> schoolTime(7), extraTime(7);
int maxTime = 0, unhappyDay = 0;
// 读取每天的上课时间
for (int i = 0; i < 7; ++i) {
cin >> schoolTime[i] >> extraTime[i];
}
// 计算每天的总上课时间
for (int i = 0; i < 7; ++i) {
int totalTime = schoolTime[i] + extraTime[i];
// 检查是否超过8小时
if (totalTime > 8) {
// 如果超过8小时,检查是否是目前为止最不高兴的一天
if (totalTime > maxTime) {
maxTime = totalTime;
unhappyDay = i + 1; // 将索引转换为星期几(1-7)
}
}
}
// 输出结果
if (maxTime > 0) {
cout << unhappyDay << endl;
} else {
cout << "0" << endl;
}
return 0;
}
这份代码我放了注释,请放心食用#^.^#下期见~