P1440 求m区间内的最小值

Aimeee

本来是一个很水的单调队列题

但是我拿来练习手写队列

然后就挂了

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int head,tail;
int st[2000001];
int ans[2000001];
int Aimee[2000001];
int n,m,x;
int la;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		scanf("%d",&Aimee[i]);
		x=Aimee[i-1];
		if(i==1){
		cout<<0<<endl;
		continue;
		}
		while(tail>head&&Aimee[st[tail-1]]>x){
			tail--;
		}
		st[tail++]=i-1;
	
		while(st[tail-1]-st[head]>=m){
			head++;
		}
		printf("%d
",Aimee[st[head]]);
	}
	return 0;
}

原文地址:https://www.cnblogs.com/For-Miku/p/14257799.html