Разбор задач 26. 12. 2016 ЗАДАЧА 1.

Скачать презентацию Разбор задач 26. 12. 2016  ЗАДАЧА 1. Скачать презентацию Разбор задач 26. 12. 2016 ЗАДАЧА 1.

razbor.pptx

  • Размер: 74.0 Кб
  • Автор:
  • Количество слайдов: 18

Описание презентации Разбор задач 26. 12. 2016 ЗАДАЧА 1. по слайдам

Разбор задач 26. 12. 2016 Разбор задач 26. 12.

ЗАДАЧА 1. НЕЗНАЙКА УЧИТЬСЯ СЧИТАТЬОбластная олимпиада 2005 года ЗАДАЧА 1. НЕЗНАЙКА УЧИТЬСЯ СЧИТАТЬОбластная олимпиада 2005 года

Постановка задачи • Дана строка, состоящая из цифр;  • Найти такую подстроку, котораяПостановка задачи • Дана строка, состоящая из цифр; • Найти такую подстроку, которая представляет собой последовательность подряд идущих натуральных чисел и является самой длинной по количеству чисел.

Решение • Перебираем начальную позицию, с которой начинается искомая последовательность;  • Перебираем длинуРешение • Перебираем начальную позицию, с которой начинается искомая последовательность; • Перебираем длину начального числа; • Прибавляем единицу к начальному числу и проверяем следующее; • Проделываем тоже самое до тех пор пока строка не закончится либо число не будет удовлетворять последовательности; • Сложность решения O(|S| 3 ).

Трудности • Прибавление единицы к длинному числу (представленному в виде массива);  • 0Трудности • Прибавление единицы к длинному числу (представленному в виде массива); • 0 не является натуральным числом;

ЗАДАЧА 2. ПОВРЕЖДЕННАЯ КАРТАОбластная олимпиада 2005 года ЗАДАЧА 2. ПОВРЕЖДЕННАЯ КАРТАОбластная олимпиада 2005 года

Постановка задачи • Дан двумерный массив, состоящий из нулей и единиц;  • НайтиПостановка задачи • Дан двумерный массив, состоящий из нулей и единиц; • Найти наибольший по площади квадратный подмассив, который состоит из единиц; • Вычислить площадь найденного подмассива.

Решение • Задача решается с помощью динамического программирования;  • Пусть A – исходныйРешение • Задача решается с помощью динамического программирования; • Пусть A – исходный массив, D – массив состояний ДП; • D[i][j] – максимальная площадь квадрата из единиц, правая нижняя вершина которого находится в точке (i, j); • Если клетка (i, j) повреждена, то D[i][j] = 0; • Если не повреждена D[i][j] = min(D[i – 1][j], D[i][j – 1], D[i – 1] [j – 1]) + 1; • Первая строка и первый столбец заполняются отдельно D[1][j] = A[1][j] и D[i][1] = A[i][1]; • Сложность решения O(N * M);

ЗАДАЧА 3. ABRACADABRAРегиональная олимпиада РФ за 2012 год ЗАДАЧА 3. ABRACADABRAРегиональная олимпиада РФ за 2012 год

Постановка задачи • Дан набор строк s 1 , s 2 , s 3Постановка задачи • Дан набор строк s 1 , s 2 , s 3 , …, sm ; • Для каждой из строк s i определить сколько слов из словаря t 1 , t 2 , …, tn имеют суффикс и префикс равный s i ; • iй суффикс – это последние i символов строки t; • iй префикс – это первые i символов строки t;

Решение • Преобразуем каждую строку t, состоящую из n символов к виду: t 0Решение • Преобразуем каждую строку t, состоящую из n символов к виду: t 0 t n-1 t 1 t n-2 … t n-2 t 1 t n-1 t 0 • Например слово table будет преобразовано в t e a l b b l a e t • Отсортируем преобразованный словарь в лексикографическом порядке; • Таким образом, все слова с одинаковым супрефиксом идут подряд;

Решение (1) • Для каждой из строк s проделаем аналогичное преобразование;  • ДвоичнымРешение (1) • Для каждой из строк s проделаем аналогичное преобразование; • Двоичным поиском найдем самое левое вхождение (left) и самое правое вхождение (right); • Тогда ответом для строки si будет right – left + 1; • Сложность решения O(n * Log(m));

Пример • Пусть задан набор строк из примера задачи;  • Тогда строки будутПример • Пусть задан набор строк из примера задачи; • Тогда строки будут преобразованы следующим образом: abacaba => a a b b a a c c a a b b a a; abracadabra => a a b r r b a a c d a a d c a a b r r b a a; aa => a a ; abra => a a b r r b a a;

Пример (1) • Отсортируем словарь в лексикографическом порядке: aaaa aabbaaccaabbaa aabrrbaacdaadcaabrrbaa • Для образцаПример (1) • Отсортируем словарь в лексикографическом порядке: aaaa aabbaaccaabbaa aabrrbaacdaadcaabrrbaa • Для образца a (aa) left = 1, right = 4, ответ = 4; • Для образца abra (aabrrbaa) left = 3, right = 4, ответ = 2; • Для образца abac (acbaabca) left = -1, right = -1, ответ = 0;

ЗАДАЧА 4. ЗЕМЛЕТРЯСЕНИЕUSACO Open 2001 ЗАДАЧА 4. ЗЕМЛЕТРЯСЕНИЕUSACO Open

Постановка задачи • Задан неориентированный граф из N вершин и M ребер;  •Постановка задачи • Задан неориентированный граф из N вершин и M ребер; • Каждое из ребер необходимо восстановить за время t и потратив на это c денежных единиц; • Задача состоит в том, чтобы восстановить ребра таким образом, чтобы граф оказался связным; • При этом обещано вознаграждение F за выполненную задачу; • Требуется вычислить максимально возможную прибыльность (т. е. количество денег, которые можно заработать за час работы);

Решение • Допустим, что нам известна прибыльность работ v ;  • Тогда очевидно,Решение • Допустим, что нам известна прибыльность работ v ; • Тогда очевидно, что мы можем вычислить стоимость каждого из ребер как t * v + c: первое слагаемое – полученная прибыть, второе – стоимость восстановления дороги; • В этом случае мы можем построить минимальное остовное дерево и если его стоимость меньше вознаграждения F, то такая прибыльность нам подходит;

Решение (1) • Заметим, что если увеличивать прибыльность v , то и стоимость дереваРешение (1) • Заметим, что если увеличивать прибыльность v , то и стоимость дерева будет расти; • Следовательно, cost(v) – возрастающая (монотонная функция); • Таким образом, v можно перебирать двоичным поиском; • Найденное оптимальное значение прибыли и будет ответом; • Сложность решения O(Log(C * M) * M * Log(M));

Зарегистрируйтесь, чтобы просмотреть полный документ!
РЕГИСТРАЦИЯ