Два указателя, сортировка и бинарный поиск (24 сентября 2015)
- [26 минут] Задачи на два указателя
- Найти самый длинный подотрезок с суммой не более S
- Найти самый длинный подотрезок, на котором не более K нулей
- Найти самый длинный подотрезок, на котором не более K различных чисел. Хештаблица, сжатие координат.
- Даны N точек xi на прямой. Сопоставить им числа от 1 до N, чтобы было верно (pi < pj) == (xi < xj)
- Найти в массиве такие i, j, k : ai + aj + ak = S, O(N2)
- Даны N различных натуральных чисел, сколько существует треугольников с такими длинами сторон? O(N2)
- Операции с множествами и мультимножествами, как сортированными массивами: пересечение, объединение, разность, merge [code]
- [16 минут] Правильный бинпоиск. C кодом на C++: [code] . Версия 2016/17: [code]
- Бинпоиск для поиска элемента в отсортированном массиве? Хеш-таблица умеет тоже самое ещё быстрее.
- lower_bound
- Граничное значение монотонного предиката, который в [-1] не верен, а в [n] верен
- lower_bound → первый больший x, последний равный x
- C++: lower_bound, upper_bound, binary_search
- [40 минут] Задачи на бинпоиск
- Дан массив. Запрос: найти в массиве количество чисел от L до R.
- Дан массив. Запрос: найти в массиве количество чисел равных X на позициях от L до R.
- Дан массив. Запрос: найти позицию первого вхождения X. Пусть ответ равен K, найти за O(logK). (Бинарный поиск не хуже линейного)
- Даны N верёвок длин a1, ... aN; можно их резать, склеивать нельзя. Какой максимальной длины L мы сможем получить K кусков длины L?
- Даны N точек на прямой. Выбрать K из них, максимизировать минимальное расстояние между ближайшими
- Троичный поиск: дан массив A такой, что A[1] < A[2] < ... < A[k] > A[k+1] > ... > A[n], k неизвестно. Найти k за O(logn)
- Поиcк вещественного корня многочлена нечётной степени
- [homework] Даны N точек xi на прямой. Сопоставить им числа от 1 до N, чтобы было верно (pi < pj) == (xi < xj)
- Сложные задачи (ai, bi > 0)
- Поиск всех вещественных корней многочлена
- [homework] Даны n натуральных пар (ai, bi), выбрать k из них такие, что (∑ ai) / (∑ bi) → max
- [homework] Даны n натуральных пар (ai, bi), выбрать k из них такие, что (∑ ai) × (∑ bi) → max