【GESP】C++一级练习 luogu-P1534, 不高兴的津津(升级版)
GESP一级综合练习,需要一点程序解题的小思考,推荐练习,难度★✮☆☆☆。
luogu-P1534
题目要求
题目描述
津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每天妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。
这次与 NOIp2004 普及组第一题不同的是:假设津津不会因为其它事不高兴,但是她的不高兴会(当然高兴也会)持续到第二天。请你帮忙检查一下津津以后 $n$ 天的日程安排,看看以后 $n$ 天她会不会不高兴(计算方法:用昨天不高兴程度加上今天上课总时间减去 $8$ 后得到的数作为今天不高兴程度);输出以后 $n$ 天结束后不高兴程度和是多少。
输入格式
第一行共一个数 $n$。
第二行至第 $n+1$ 行,每行两个数,表示这天上学时间和课外补习班时间。
输出格式
一个数,这 $n$ 天过后的不高兴程度和。
样例输入 #1
1
2
3
4
5
6
7
8
7
5 3
6 2
7 2
5 3
5 4
0 4
0 6
样例输出 #1
1
-2
数据范围及约定
对于全部数据,上学时间和上课时间各不超过 $8$,和不超过 $16$,$n \le 3000$。
题目分析
- 理解题目要求
- 每天有上学时间和课外补习时间
- 一天总学习时间超过8小时会不高兴
- 不高兴程度会持续到第二天
- 需要计算n天后的总不高兴程度
- 解题思路
- 每天的不高兴程度 = 前一天的不高兴程度 + (今天总学习时间 - 8)
- 用变量记录前一天的不高兴程度
- 用变量累加每天的不高兴程度
- 循环n天,计算最终的不高兴程度总和
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int main() {
int a; // 天数
cin >> a;
int b, c; // b是上学时间,c是上课时间
int ans = 0; // 存储最终的不高兴程度总和
int y = 0; // 存储前一天剩余的不高兴程度
for (int i = 1; i <= a; i++) {
cin >> b >> c;
int t = (c + b) - 8; // 计算当天产生的不高兴程度(上学+上课时间-8)
int t_1 = t + y; // 当天总的不高兴程度 = 当天产生的 + 前一天剩余的
ans += t_1; // 累加到总和中
y = t_1; // 更新前一天的不高兴程度
}
cout << ans; // 输出最终的不高兴程度总和
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权