1 条题解
-
0
自动搬运
来自洛谷,原作者为

chen_zhe
Aya 敲可爱的~搬运于
2025-08-24 21:07:45,当前版本为作者最后更新于2025-05-14 15:01:55,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
欢迎报名洛谷网校,期待和大家一起进步!
本题考察循环结构、分支嵌套。
本题的关键在于连续正常的最长小时数。为此,我们需要准备两个计数变量。一个是
cur,用来记录当前这一段连续正常的血压持续了多少个小时。另一个是max_h,用来记录我们到目前为止发现的最长的连续正常时间。我们一个小时一个小时地来观察血压。对于每一次测量结果,我们需要判断这次血压是否正常。如果这次血压是正常的,我们就将
cur的值加 。如果这次血压是不正常的,相当于打断了“连续正常”。这时候,我们要看看刚刚结束的那一段连续正常的时间cur是不是比我们之前记录的max_h还要长(使用“打擂台法”更新max_h),并且将cur清零。这样做有一个例外情况:如果血压到最后一次测量结束一直是维持正常的,那么
max_h没有被更新过。所以,在所有循环都结束后,我们还需要再比较一次当前的cur和max_h,看看cur是不是比max_h大,如果是,就再更新一次max_h。参考代码:
for (int i = 0; i < n; ++i) { // 循环 n 次,代表 n 个小时的测量 int a, b; cin >> a >> b; if (a >= 90 && a <= 140 && b >= 60 && b <= 90) { // 如果血压正常 cur++; // 当前连续正常的小时数加 1 } else { // 如果血压不正常,则“打擂台”更新 max_h。 if (cur > max_h) max_h = cur; cur = 0; } } // 解决例外情况 if (cur > max_h) max_h = cur;
- 1
信息
- ID
- 11808
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者