Sparse table: различия между версиями
Перейти к навигации
Перейти к поиску
Ctrlalt (обсуждение | вклад) (→Ссылки) |
Ctrlalt (обсуждение | вклад) Нет описания правки |
||
Строка 26: | Строка 26: | ||
* [http://codeforces.com/blog/entry/45485 Codeforces — 2D Range minimum Query in O(1)] | * [http://codeforces.com/blog/entry/45485 Codeforces — 2D Range minimum Query in O(1)] | ||
Код: | Код: | ||
* [ | * [http://github.com/indy256/codelibrary/blob/master/java/structures/RmqSparseTable.java CodeLibrary — RMQ: Sparse Table] | ||
* [http://github.com/ADJA/algos/blob/master/DataStructures/SparseTable.cpp Algos — Sparse table] | * [http://github.com/ADJA/algos/blob/master/DataStructures/SparseTable.cpp Algos — Sparse table] | ||
Задачи: | Задачи: |
Версия от 08:09, 2 августа 2019
class SparseTable { int lg[100010], st[20][100010]; public: SparseTable(int a[], int size) { for (int i = 0; i <= size; i++) lg[i] = (i > 1 ? lg[i / 2] + 1 : 0); for (int p = 0; (1 << p) <= size; p++) { for (int i = 0; i + (1 << p) <= size; i++) st[p][i] = (p ? min(st[p - 1][i], st[p - 1][i + (1 << p - 1)]) : a[i]); } } int getMin(int l, int r) { int p = lg[r - l + 1]; return min(st[p][l], st[p][r - (1 << p) + 1]); } };
Ссылки на задачи
- Codeforces #100093.E — Разреженные таблицы (Базовая реализация)
- Codeforces #100255.A — Грибы (Базовая реализация)
Ссылки
Теория:
- adilet.org — Sparse Table
- neerc.ifmo.ru/wiki — Решение RMQ с помощью разреженной таблицы
- Codeforces — 2D Range minimum Query in O(1)
Код:
Задачи: