单调栈
以查找序列元素右边第一个大于它的元素的下标为例:
int top , st [ MAXN ] , val [ MAXN ] , ans [ MAXN ] ;
for ( int i = 1 ; i <= n ; i++ )
{
cin >> val [ i ] ;
while ( top > 0 && val [ i ] > val [ st [ top ] ] )
ans [ st [ top-- ] ] = i ;
st [ ++top ] = i ;
}

浙公网安备 33010602011771号