zoukankan      html  css  js  c++  java
  • 洛谷 P1440 求m区间内的最小值

    洛谷 P1440 求m区间内的最小值

    洛谷传送门

    题目描述

    一个含有 nn 项的数列,求出每一项前的 mm 个数到它这个区间内的最小值。若前面的数不足 mm 项则从第 11 个数开始,若前面没有数则输出 00。

    输入格式

    第一行两个整数,分别表示 nn,mm

    第二行,nn 个正整数,为所给定的数列 a_ia**i

    输出格式

    nn 行,每行一个整数,第 ii 个数为序列中 a_ia**i 之前 mm 个数的最小值。


    题解:

    滑动窗口。

    代码:

    #include<cstdio>
    #include<deque>
    using namespace std;
    const int maxn=2e6+6;
    int n,k;
    int a[maxn];
    deque<pair<int,int> > q;
    int main()
    {
    	scanf("%d%d",&n,&k);
    	for(int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	puts("0");
    	for(int i=2;i<=n;i++)
    	{
    		while(!q.empty() && a[i-1]<q.back().second)
    			q.pop_back();
    		q.push_back(make_pair(i-1,a[i-1]));
    		while(q.front().first<=i-1-k)
    			q.pop_front();
    		printf("%d
    ",q.front().second);
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    HGOI20191115 模拟赛 题解
    HGOI20191114 CSP模拟赛 反思
    HGOI 20191108 题解
    HGOI 20191107 题解
    HGOI 20191106 题解
    HGOI 20191105 题解
    HGOI 20191103am 题解
    HGOI 20191101am 题解
    HGOI 20191031am 题解
    新的博客!!!
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13926120.html
Copyright © 2011-2022 走看看