1 条题解

  • 0
    @ 2052-4-3 11:23:01

    【例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

    信息

    ID
    214
    时间
    1000ms
    内存
    256MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者