1 条题解

  • 1
    @ 2024-5-23 10:49:38

    比较典型的滑动窗口求最值。按下标从1到n依次把每个数加入优先队列,并在下标大于等于k时,输出队首元素即可。

    核心代码
    
    for (int i = 1; i <= n; i++)
        cin >> a[i].v, a[i].id = i;
    for (int i = 1; i <= n; i++)
    {
        while (!qmax.empty() && qmax.back().v <= a[i].v)
            qmax.pop_back();
        qmax.push_back(a[i]);
        if (qmax.front().id == i - k)
            qmax.pop_front();
        if (i >= k)
            cout << qmax.front().v << endl;
    
    • 1

    信息

    ID
    748
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    (无)
    递交数
    58
    已通过
    23
    上传者