Дан массив пар v длины n, где v[i] = {a, b}, a <= b. Так же дано q запросов l, r. Необходимо посчитать количество элементов на отрезке v[l, r], таких, что l <= v[i].a <= v[i].b <= r.
n <= 10^5, q <= 10^5
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | Kevin114514 | 3603 |
| 4 | jiangly | 3583 |
| 5 | strapple | 3515 |
| 6 | tourist | 3470 |
| 7 | dXqwq | 3436 |
| 8 | Radewoosh | 3415 |
| 9 | Otomachi_Una | 3413 |
| 10 | Um_nik | 3376 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 157 |
| 2 | adamant | 153 |
| 3 | Um_nik | 146 |
| 3 | Proof_by_QED | 146 |
| 5 | Dominater069 | 145 |
| 6 | errorgorn | 141 |
| 7 | cry | 139 |
| 8 | YuukiS | 135 |
| 9 | TheScrasse | 134 |
| 10 | chromate00 | 133 |
Дан массив пар v длины n, где v[i] = {a, b}, a <= b. Так же дано q запросов l, r. Необходимо посчитать количество элементов на отрезке v[l, r], таких, что l <= v[i].a <= v[i].b <= r.
n <= 10^5, q <= 10^5
| Название |
|---|



Автокомментарий: текст был обновлен пользователем onexgol (предыдущая версия, новая версия, сравнить).
Заметим, что ответ на запрос
(l, r)= (размер отрезка) — (количество неподходящих элементов)где
bad = cnt(a.r > r) + cnt(a.l < l) - cnt(a.r > r && a.l < l)Первые 2 слагаемых хорошие, третье сложное, от него надо избавиться.
Условие
a.r > r && a.l < lвлечётa.r - a.l > r - l.Значит, если для элемента выполняется
a.r - a.l <= r - l, то он не может попасть в третье слагаемое.Чтобы исключить третье слагаемое:
r - l.(l, r)добавим в структуру данных все ещё не добавленные элементы, у которыхa[i].r - a[i].l < r - l.Теперь для каждого запроса нужно вычислить только:
cnt(a.l < l) + cnt(a.r > r)на отрезке[l, r]среди добавленных элементов.Эту задачу умеет решать Merge‑sort Tree, но с модификацией: вместо массивов в узлах храним Декартово дерево (Treap), чтобы поддерживать динамическое добавление элементов.
O(log^2 n)O(log^2 n)O((n + q) log^2 n)Дипсик кстати решил круче, у него nlogn и код легче. Думаю мне сюда его решение не надо кидать, все сами справятся сделать промпт