Значение вопросов:
Для заданной последовательности, запрос ответа м, В: г л и задать различное количество цветов, R: индекс х к у цвета
Решение:
Ремонт команда с Мо, Мо относительно обычной команды, хочет добавить рейтинг ключевых слов
# include <бит / STDC ++ ч.> #define Num CH-'0' #define р putchar ( '\ п') с помощью патезрасе; Шаблон <Ьурепате T> недействительными чтения (Т & разреш) { BOOL флаг = ложь; символ ч; в то время как (ч == '-') && (флаг = истина) (isdigit (ч = GetChar (!))); для (Рез = Num; isdigit (CH = GetChar ()); разреш = разреш * 10 + Num); Флаг && (Рез = -res); } Шаблон <Ьурепате T> недействительными записи (Т х) { если (х <0) putchar ( '-'), х = -x; если (х> 9) записи (х / 10); putchar (х +% 10 '0'); } Const INT maxn = 50010; Const INT М = 50010; Int N, м; INT qu_num, op_num; INT LST [maxn], цв [maxn], Л [maxn], CNT [1000010], разреш [M]; структура запроса { INT л, г, т, позы; BOOL оператор <(Const запроса & а) константные { возврата BLO [Al] == BLO [л] (BLO [ар] == BLO [г] т < по адресу: BLO [г] <BLO [ар]): BLO [л] <BLO [Al]; } } Qu [М]; Опер структура { INT х, LST, теперь; } оп [М]; INT основных () { чтение (N), чтение (м); INT д = пау (п, 0,666666); для (INT = 1; г <= п; я ++) следующим образом (столбец [I]), BLO [I] = (I-1) / д + 1, LST [я] = Col [I]; ИНТ х, у; для (INT I = 1; I <= т; я ++) { обугленной ч [5]; зсапЕ ( "% s", ч); зсапЕ ( "% d% d", & х, & у); если (ч [0] == 'Q') оп [++ op_num] .x = х, оп [op_num] .lst = LST [х], оп [op_num] .now = у, LST [х] = у; Qu [++ qu_num] .L = х, Qu [qu_num] .r = у, Qu [Qu [qu_num] .pos = qu_num]. еще вроде (Цюй + 1, Цюй + 1 + qu_num); INT л = 0, г = 0, т = 0, ANS = 0; для (INT = 1; я <= qu_num; я ++) { в то время (т <Qu [I] .t) { т ++; ///最初的т = 0,先增 , если (л <= оп [т] .x && оп [т] .x <= г) { если (! - CNT [Col [оп [т] .x]]) ans--; если (CNT [оп [т] .now] ++!) анс ++; } Col [оп [т] .x] = оп [т] .now; } В то время (т> Qu [I] .t) { если (л <= оп [т] .x && оп [т] .x <= г) { если (! - CNT [Col [оп [т] .x] ]) ans--; если (CNT [оп [т] .lst] ++!) анс ++; } Col [оп [т] .x] = оп [т] .lst; T--; в то время как (г <Qu [я] .r) , если ANS ++ (CNT [Col [++ г]] ++!); в то время как (л> Цюй [я] .l) , если (CNT [цв [- л]] ++!) анс ++; в то время как (г> Qu [I] .r) , если (- CNT [Col [r--]]!) ans--; в то время как (л <Цюй [я] .l) , если (- CNT [цв [л ++]]!) ans--; разреш [Qu [I] .pos] = анс; } Для (INT = 1; я <= qu_num; я ++) записи (разреш [I]), р; возвращать 0; }