1 for(int i=1;i<=n;i++){2 while(head<=tail&&q[head]<=i-k)head++;3 while(head<=tail&&a[q[tail]]>=a[i])tail--;4 q[++tail]=i;5 if(i>=k)6 cout< <<" ";7 }
规定先维护head,head是来描述决策是否过时的变量,在此位置的变量处于极值,tail是来描述最后一位插入时应该放的位置,添加决策用tail,取决策使用head
本文共 327 字,大约阅读时间需要 1 分钟。
1 for(int i=1;i<=n;i++){2 while(head<=tail&&q[head]<=i-k)head++;3 while(head<=tail&&a[q[tail]]>=a[i])tail--;4 q[++tail]=i;5 if(i>=k)6 cout< <<" ";7 }
规定先维护head,head是来描述决策是否过时的变量,在此位置的变量处于极值,tail是来描述最后一位插入时应该放的位置,添加决策用tail,取决策使用head
转载于:https://www.cnblogs.com/saionjisekai/p/9537725.html