1 条题解
-
0
【例31.3】正常血压
解题思路
若当前收缩压在 [90,140] 且舒张压在 [60,90],当前连续长度加 1,否则清零;维护历史最大值。
正确性说明
cur 始终是以本次测量结尾的连续正常长度。最优段必以某次测量结尾,遍历所有结尾并取最大得到答案。
易错点
要求连续正常,不是正常次数总和。
复杂度
时间 O(n),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; int cur = 0, best = 0; while (n--) { int a, b; cin >> a >> b; if (a >= 90 && a <= 140 && b >= 60 && b <= 90) cur++; else cur = 0; best = max(best, cur); } cout << best << "\n"; return 0; }
- 1