单调队列
滑动窗口维护区间最大值:
int head = 0 , tail = 0 ;
for ( int i = 1 ; i <= n ; i++ )
{
while ( head < tail && q [ head ] + k <= i )
head++ ;
while ( head < tail && arr [ q [ tail - 1 ] ] < arr [ i ] )
tail-- ;
q [ tail++ ] = i ;
if ( i >= k )
cout << arr [ q [ head ] ] << endl ;
}

浙公网安备 33010602011771号