Persistent Data Structures
  0) Деревья = O(1), O(logN)
  1) Массивы = O(logN), O(logN)
  *2) Задачи на: Stack, Queue, Heap, Treap, SNM
  *3) Garbage Collection (online = число ссылок на объект, offline = чистка памяти)

Потоки + MinCost потоки + Отрицательные циклы в графах
  0) Поток за O(|f|*E)
  1) Масштабирование за O(E^2)
  2) Алгоритм Диница. Поиск паросочетание за O(EsqrtV) и потока за O(VElogMax).
  3) MinCost за O(|f|*FordBellman)
  4) MinCost за O(|f|*Dijkstra + FordBellman)
  5) Поиск отрицательного цикла за O(VE)
  *6) Поиск отрицательного цикла min среднего веса за O(VElogMax) и O(VE)
  *7) Min циркуляция за O((VE)^2)
  8) Венгерка за O(V^3). Венгерка и поток - почти одно и то же.

Корневая Эвристика (SQRT-decomposition)
  *1) Split поможет сделать код проще
  *2) Offline балансирование поможет сделать код еще проще
  3) Начинать часто можно с одного отрезка. Когда нужно начинать с O(sqrtN) отрезков?
  4) Куча задачек на эту тему. Не все, что решается решается корневой эвристикой решается деревом отрезков!
 
Квадродеревья
  1) Аналогия с деревом отрезков
  2) Делим на 2 части, получаем оценку O(sqrtN) для прямоугольных запросов
  3) Приближенные решения геометрических задач
  4) Задачи, в которых квадродерево в худшем случае работает за O(N)
  *5) Задача "отвечать online на запрос сколько из N точек лежат в полуплоскости". Решение квадродеревом за O(N^{1/2+eps})

*Метод "а спроецирем-ка все на прямую"
  *1) Задача H с зимнего ЧУ от Коли Дурова
  *2) Задача про поиск ближайших точек (даны N точек, для каждой нужно найти ближайшую)
  *3) Когда этот метод работает, когда он НЕ работает

Хэши
  1) Полиномиальный хэш от любого объекта
  2) Хэш таблица списками и открытой адресация (разница)
  3) Отсутствие коллизий. Задача про приведения, где с этим проблемы.
  *4) Экономия памяти (я умею хранить всего 8 бит (1 байт) на каждый объект, т.е. даже сам хэш хранить не нужно)
  *5) Вещественный хэш - реальность (даны вещественные числа, посчитанные с погрешностью, нужно их захэшировать)

Геометрия
  1) Диаграмма Вороного --- полезная штука, просто пишется за O(N^2)
  2) Сканирующая прямая и куча задач на эту тему (например, Диаграмма Вороного за O(NlogN))
  3) Сканирующий луч
  4) Метод "отсортируем по углу"
  5) Применения set (TreeSet) с правильным компаратором.

Фурье
  1) Собственно алгоритм 
  2) Минизация числа умножений
  3) Нерекурсивная реализация
  *4) Обратное FFT = Прямой FFT + reverse(a+1,a+n)
  *5) Два прямых FFT в одном (оптимайз по времени в 2 раза)
  *6) Зацикленная свертка (оптимайз по времени еще в 2 раза)

Перебор
  Тут у меня очень много слов и тем. И задача.

Метод отжига, Локальные оптимизации, Генетика
  Тут у меня есть некоторые знания и наработки, но предоставить толковую лекцию и подборку задач я не готов. Подготовлюсь.