单调队列求问
  • 板块学术版
  • 楼主iamajcer
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/20 21:44
  • 上次更新2024/12/20 22:17:32
查看原帖
单调队列求问
629377
iamajcer楼主2024/12/20 21:44
hh=1, tt=0; //初始化的问题
for (int i=1; i<=n; i++)
{
    while (hh<=tt && q[hh]<i-k+1) hh++; 
    while (hh<=tt && a[q[tt]]>a[i]) tt--; 
    q[++tt]=i; //加入元素 i
         
    if (i>=k) printf("%d ", a[q[hh]]);
}
puts("");

这是一个板子。

队头和队尾初始化应该有讲究吧?我测试了一下发现,队尾初始化的值不一定要是队头的值减一。即 tt=hh 也行而不是一定要求 tt=hh-1

但是,如果 tt=hh,下一次加入元素 ii 的时候,会多出来一个 0,这里多出的 0 不会有影响吗?

2024/12/20 21:44
加载中...