Более 2019 скот с летней школой подготовки 1

Эквивалентные префиксы

Это тема с однообразным стеком, почему вы можете использовать монотонное стек?

Два массива одновременно выполнять монотонную стек, если каждый раз, когда толчок в большинстве, конечно, до этого толчка, безусловно, будет несколько поп-музыки,

Если есть ряд в стек, а затем судить себя на этот раз в стек число позиций это не то же самое, если не идентичны, чтобы объяснить это определенно не так.

Почему в это время, только позиция в стеке это?

Во-первых, минимальное число до этого, конечно, не считается, потому что текущая нижняя часть стека является наименьшим из положения, функции и значение после номера перед номером, конечно RMQ функция возвращает нижнюю часть стека.

Тогда, что рассматривается в рамках элементов стека, то это должно быть очень хорошая мысль.

#include <cstdio> // Описание "Если будет установлено, скажем , " X, давайте летать "(Здесь X является время начала) ..." 
#include <cstdlib> // и выход в "X, давайте летать" 
#include <CString> // в ««»и«»» не символ, не копируют неправильно! ! ! 
#include <Queue> 
#include <Vector> 
#include <алгоритм> 
#include < строка > 
#include <Stack> 
#include <iostream> 
#include <Карта>
 #define INF 0x3f3f3f3f
 #define inf64 0x3f3f3f3f3f3f3f3f
 с использованием  пространства имен STD;
 долго  долго LL;
INT queue_mina [maxn];
Int queue_minb [maxn];
Int в [maxn], б [maxn]; 

INT основных () 
{ 
    INT п;
    в то время как (Scanf ( " % D " , & п) =! EOF) 
    { 
        BOOL флаг = 1 ;
        INT ANS = п;
        для ( INT I = 1 ; г <= п; я ++) зсапЕ ( " % d " , & [I]);
        для ( INT I = 1; г <= п; я ++) зсапЕ ( " % d " , & Ь [I]);
        INT f1 = 1 , t 1 = 0 ;
        INT f2 = 1 , t 2 = 0 ;
        INT г = 1 ;
        в то время как (г <= п) 
        { в 
            то время как (f1 <= t1 && а [г] <а [queue_mina [t1]]) t1-- ; 
            queue_mina [ ++ t1] = т;
            в то время как (f2 <= t2 && Ь [г] <б [queue_minb [t2]]) t2-- ; 
            queue_minb [ ++ t2] = т;
            //Е ( "t1 =% d t2 =% d queue_mina [% d] =% d queue_minb [% d] =% d \ п", t1, t2, t1, queue_mina [t1], t2, queue_minb [t2]); 
            если (! t1 = t2) 
            { 
                флаг = 0 ; 
                ANS = г - 1 ;
                перерыв ; 
            } 
            Г ++ ; 
        } 
        Е ( " % d \ п " , ANS); 
    } 
    Возвращает  0 ; 
}
A

 

рекомендация

отwww.cnblogs.com/EchoZQN/p/11246775.html