Оценки снизу на стандартные алгоритмы
- Сортировка NlogN
- Дерево Add + Min + Del >= NlogN, N*Add + ViewAll >= NlogN
- Куча Add + Del >= NlogN, Build + N*ExtractMin >= NlogN
- Выпуклая оболочка >= NlogN
Операция удаления в любой структуре за ~O(1)
- Add + Find = Delete
- Деревья без удаления
- Куча без удаления, Дейкстра с кучей
- Граф и удаление ребер. Запросы = AddEdge, DelEdge, Connected?
Splay-Дерево
- Update
- Find
- Add = Find + Update
- Delete - не нужен (см. выше).
- Реализация = 3 случая: zig-zig, zig-zag, root
- Как избавиться от оставшихся трех? getLeft, getRight, isInverse
Язык C++
- int & operator [] ( int i )
- Реализация struct Array
- Битовое сжатие: struct { char a:3; char b:5; }
- Указатели: int a, b; int *p = &b; p--; *p = 2;
- Для особых случаев: *(x > 0 ? &a : &b) = 3;
Практика
- Splay-Tree (с "удалением")
- Дейкстра с кучей без удаления (сравнить по времени с обычной)