P1886 滑动窗口 /【模板】单调队列 set的应用题解

P1886 滑动窗口 /【模板】单调队列


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//60分
#include<bits/stdc++.h>
using namespace std;
vector <int> Maxv,Minv;
struct Maxnode
{
    int val;
    int i;
    bool operator <(const Maxnode &n)const
    {
        if (val>n.val)
           return true;
        else
           return i<n.i;
    }
};
set <Maxnode> Maxset;
int main()
{
    int n,k;
    Maxnode Mx;
    set<Maxnode>::iterator Mxit,Miit;
    scanf("%d %d",&n,&k);
    for (int i=1;i<=k;i++)
    {
        int x;
        scanf("%d",&x);
        Mx.val=x;
        Mx.i=i;
        Maxset.insert(Mx);
    }
    for (int i=k+1;i<=n;i++)
    {
        int x;
        Mxit=Maxset.begin();
        while(i-(Mxit->i)>k)
        {
            Maxset.erase(Mxit);
            Mxit=Maxset.begin();   
        }
        Maxv.push_back(Mxit->val);
        Miit=Maxset.end();
        Miit--;
        while(i-(Miit->i)>k)
        {
            Maxset.erase(Miit);
            Miit=Maxset.end();
            Miit--;
        }
        Minv.push_back(Miit->val);
        scanf("%d",&x);
        Mx.val=x;
        Mx.i=i;
        Maxset.insert(Mx);
    }
    Mxit=Maxset.begin();
    while(n+1-(Mxit->i)>k)
    {
        Maxset.erase(Mxit);
        Mxit=Maxset.begin();   
    }
    Maxv.push_back(Mxit->val);
    Miit=Maxset.end();
    Miit--;
    while(n+1-(Miit->i)>k)
    {
        Maxset.erase(Miit);
        Miit=Maxset.end(); 
        Miit--;
    }
    Minv.push_back(Miit->val);
    for (int i=0;i<Minv.size();i++)
    {
        printf("%d ",Minv[i]);
    }
    printf("\n");
    for (int i=0;i<Maxv.size();i++)
    {
        printf("%d ",Maxv[i]);
    }
    printf("\n");
    return 0;
}

  

posted @   心悟&&星际  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示