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", "ш", стандартный вывод); оплот :: решить (); }