Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Памагите
1
  1  Ван Пан Впп, 11 марта 2024 г. 17:59:08
      https://text.ru/
[url]https://text.ru/[/url]
[url=https://text.ru/]https://text.ru/[/url]
<a href="https://text.ru/">https://text.ru/</a>
[https://text.ru/](https://text.ru/)
  2  Холи, 09 декабря 2023 г. 9:07:43
      Огромное срасибо за такой подробный разбор
  3  Тер-Саркисов Богдан Олегович, 08 декабря 2023 г. 21:45:50
      ...Для этого надо заметить следующее: в оптимальном разбиении нет групп размера 4 и больше.
Обосновывается это тем, что такую группу можно разбить на непересекающиеся по диапазону значений группы меньшего размера, что не ухудшит ответ.
Тогда значение k в формуле надо перебирать в диапазоне [2; 3]. То есть dp[n] = min(max(dp[n-2], a[n-1]-a[n-2]), max(dp[n-3], a[n-1]-a[n-3])).
  4  Тер-Саркисов Богдан Олегович, 08 декабря 2023 г. 21:45:11
      1) Утверждается, что эффективное разбиение следует искать в сортированном массиве в виде наборов рядом стоящих элементов.
Например, если имеется сортированный массив a = [1, 4, 6, 9, 13], то эффективно разбить на две группы [1, 4, 6] и [9, 13].
Как это доказывается? Пусть имеется некоторое разбиение массива на группы. Возьмём какие-то две группы.
Пусть минимальный и максимальный элементы этих групп равны соответственно min1, max1 и min2, max2.
Ответ для выбранного разбиения вычисляется как максимум между значениями разности максимального и минимального элементами в группах.
То есть max(..., max1-min1, max2-min2).
Пусть диапазоны [min1; max1] и [min2; max2] пересекаются.
а) Пересечение такого вида: min1 <= min2 <= max2 <= max1. Тогда ответ не ухудшится, если две группы объединить в одну: [min1,...,min2,...,max2,...,max1].
б) Пересечение такого вида: min1 <= min2 <= max1 <= max2. Тогда ответ не ухудшится, если группа 1 будет поглощать из группы 2 все элементы,
начиная с min2, до тех пор, пока в группе 2 есть больше двух элементов, а группы 1 и 2 будут пересекаться по диапазону значений.
Если группы по-прежнему пересекаются по диапазону значений, то есть в группе 2 ровно два элемента, то тогда обменять элементы max1' и min2' новых групп, что тоже не ухудшит ответ.
Конец доказательства.
Теперь подключаем подход динамического программирования. Пусть dp[n] - минимальная разговорчивость для префикса размера n (сортированного) массива a.
Для вычисления dp[n] можно перебрать все возможные размеры k последней группы в разбиении и выбрать минимальный ответ.
dp[n] = min(max(dp[n-k], a[n-1]-a[n-k]) for k in range(2,...)).
Стоит учесть базовые случаи: dp[0], dp[1] не определены; dp[2] = a[1] - a[0]; dp[3] = a[2] - a[0] (если n >= 3); dp[4] = max(a[1]-a[0], a[3]-a[2]) (если n >= 4).
Это решение за O(n^2), которое с заданными ограничениями может пройти по времени.
2) Представленная вами формула из комментариев - улучшенная версия текущего решения, позволяющая решить задачу за O(n).
Для этого надо заметить сл
  5  Холи, 08 декабря 2023 г. 17:16:37
      Не совсем понимаю почему нужен min в формуле(dp[i] = min(max(t[i] - t[i - 1], dp[i - 2]), max(t[i] - t[i - 2], dp[i - 3])); ) идея: для того ,что бы масив делился на минимальные группы, но почему-то возникает сомнение
  6  Терентьев Михаил Павлович, 06 декабря 2023 г. 22:07:52
      Там в комментариях готовая формула динамики имеется. Но к ней надо придти с помощью несложных идей, писать про которые, наверное, будет медвежьей услугой.
  7  Холи, 06 декабря 2023 г. 21:34:25
      186 задача уже голова кипит, никак не научусь решать динамику
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru