您的位置:首页 > 其它

[luoguP1440] 求m区间内的最小值(单调队列 || 线段树)

2017-05-15 10:56 295 查看

传送门

 

这种水题没必要搞线段树了,单调队列就行啊。

 

——代码

#include <cstdio>

const int MAXN = 2000001;
int n, m, h = 1, t = 1;
int a[MAXN], q[MAXN];

int main()
{
int i;
scanf("%d %d", &n, &m);
for(i = 1; i <= n; i++) scanf("%d", &a[i]);
q[1] = 1;
printf("0\n");
for(i = 2; i <= n; i++)
{
while(h <= t && q[h] < i - m) h++;
printf("%d\n", a[q[h]]);
while(h <= t && a[q[t]] > a[i]) t--;
q[++t] = i;
}
return 0;
}
View Code

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: