luogu_P5459 [BJOI2016] Суши

https://www.luogu.org/problem/P5459

Япония любит материал небольших Z часто школу за пределами восточного ворота суши магазина. Здесь, тарелка суши в свою очередь, представлены в передней части малого Z с помощью конвейерной ленты. Другая жизнь
Отдел Z приносит небольшой опыт вкуса не то же самое, у нас есть определение малого удовлетворения Z с каждой тарелкой суши, такими как небольшой Z любит лосось, он был Salmon
Удовлетворенность суша 10; Z небольшой тунец не чувствует вкуса, его удовлетворенность тунца суши только 5, маленький Z недавно смотрела фильм «Соединенные Штаты
Русалка», который противно осьминог, так что он удовлетворение осьминога сашьего -100. В частности, небольшой Z является известными продовольственными товарами, он
Ешьте суши есть привычка, которую мы называем «переедание больше.» В частности, когда он ел суши на конвейерной ленте, он, не колеблясь,
Ешьте суши за ним, пока он не хочет, чтобы поесть суши до сих пор. Сегодня небольшой Z еще раз пришел в этот суши магазин, N суши блюдо получится после того, как его
Фронт, где Z небольшая удовлетворенность и-пластины суши до Ai. Малый Z может выбрать, где начать есть суши лоток, вы можете также выбрать, чтобы поесть суши блюдо, где он
Хотите знать, как много различных вариантов, что делает его степень удовлетворенности и не меньше, чем L, и не выше, чем R. Обратите внимание, что, хотя это суши, но мы не делаем
Я думаю, что это проблема на кольце, но проблема в линии. То есть, есть небольшой Z представляет собой непрерывную подпоследовательность последовательности ввода, последний один отворачиваться
Затем первый диск и не появится.
 

вход

Первая строка содержит три целых числа N, L и R, соответственно, представляют собой нижний предел и верхний предел суши пластины номер, удовлетворение.
Вторая строка содержит N целых чисел Ai, Z представляет собой небольшое удовлетворение суши.
N≤100000, | Ai | ≤100000,0≤L, R≤10 ^ 9
 

Выход

Только одна строка, содержащая целое число, представляющее общее число вариантов может сделать небольшую степень удовлетворенности и Z
Не менее, чем L, а не выше, чем R.

Не очень хорошо весов деревьев линии
Partition, посмотрите вокруг, чтобы удовлетворить точки L, R в правой половине, анс + = положение вокруг вычитания
#include <iostream> 
#include <cstdio> #define ри регистре INT
 #define мк длиной Пространство имен неавтоматического { 
    инлайн U в () { 
        щ ( 0 ), Р ( 1 );
        Чара с (GetChar ());
        в то время как (ы < ' 0 ' || ы> ' 9 ' ) {
             если (ы == ' - ' ) F = - 1 ; 
            s = GetChar (); 
        } В то время (ы> = ' 0





        ' && s <= ' 9 ' ) { 
            х = (х << 1 ) + (х << 3 ) + s ' 0 ' ; 
            s = GetChar (); 
        } 
        Вернуться х * п; 
    } 

} С 

использованием неавтоматического :: в ; 

#define Н.Н. 100005 

#include <алгоритм> Пространство имен Mainstay { 
    U ANS ( 0 ), N, а [Н.], с [NN], L, R; 
    у егГ ( Const у & л, Const у & г, Const у & х, Const



у & к) { 
        у _l (л) _ г (г) _ ге ( 0 ), в середине;
        если (к) {
             в то время как (_l <= _r) { 
                середина = (L + _ _r) >> 1 ;
                если (с [середины]> х) _r = середина 1 ;
                еще _re = середина, _l = середина + 1 ; 
            } 
            Вернуть _re; 
        } В 
        то время как (_l <= _r) { 
            середина = (L + _ _r) >> 1 ;
            если (с [середины] <х) _l = середина + 1 ;
            еще _re = середина, _r = середина1 ; 
        } 
        Вернуть _re; 
    } 

    Недействительными ДФС ( Const у & л, Const у & г) {
         если (л == г) { 
            s [л] = а [л] -a [l- 1 ], ANS + = (с [л]> = L && s [ л] <= R);
            вернуться ; 
        } 
        У середины ((л + г) >> 1 ); 
        DFS (л, в середине), поиск в глубину (середина + 1 , г);
        для (п я (л); г <= середина; ++ я) { 
            у _x (а [середина] -a [i - 1 ]), _ у (L-_й), _ г (R- _й);
            у _R (егГ (середина + 1 , г, _z, 1 )) _ л (егГ (середина + 1 , г, _y, 0 )); 
            ANS + = (_ _ л && г) (г _-_l +? 1 ) :( 0 ); 
        } 
        Для (п я (л); я <= г; ++ я) с [I] = а [я] -a [l- 1 ]; 
        станд :: сортировки (с + L, S + г + 1 ); 
    } 

    Инлайн недействительным решения () { 
        N = в (), L = в () R = в ();
        для (п я ( 1 ); г <= N; ++ я) а [I] = а [i - 1 ] +в  ();
        ДФС ( 1 , N), станд :: соиЬ << ANS; 
    } 

} 

INT основных () { 

    // freopen ( "4627.in", "г", STDIN);
    // freopen ( "4627.out", "ш", стандартный вывод); 
    оплот :: решить (); 

}

 

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

отwww.cnblogs.com/ling-zhi/p/11747487.html