Ctrl K

Нарезка торта на квадратики

Сложная
Прямоугольный торт размером rows × cols нужно разрезать на кусочки 1 × 1. Между рядами проходят горизонтальные линии 0 … rows − 2, между столбцами — вертикальные линии 0 … cols − 2. Разрез по горизонтальной линии i стоит row_cuts[i], по вертикальной линии j — col_cuts[j]. Режут по одному куску за раз: берут любой кусок, который ещё не 1 × 1, и делят его целиком по одной линии на два куска. Цена разреза зависит только от линии и не зависит от размера куска, но если линия проходит через несколько кусков, каждый из них режется и оплачивается отдельно. Верните наименьшую суммарную стоимость нарезки всего торта.
Пример 1
rows=2, cols=3, row_cuts=[4], col_cuts=[1, 2] → 10

Сначала режем по горизонтальной линии за 4. Затем вертикальная линия 1 проходит через два куска: 2 + 2. Последняя линия 0 тоже через два куска: 1 + 1. Итого 4 + 4 + 2 = 10.

Пример 2
rows=3, cols=1, row_cuts=[5, 2], col_cuts=[] → 7

Торт — полоска из трёх квадратов, каждую из двух линий режем один раз: 5 + 2 = 7.

Пример 3
rows=1, cols=1, row_cuts=[], col_cuts=[] → 0

Торт уже размером 1 × 1, резать нечего.

Ограничения
  • 1 ≤ rows, cols ≤ 10⁵
  • len(row_cuts) = rows − 1
  • len(col_cuts) = cols − 1
  • 1 ≤ row_cuts[i], col_cuts[j] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНаращиваем капитал проектами СложнаяРазличимые сокращения слов СложнаяБольше заказов к сроку СложнаяСамый узкий отрезок для всех списков СложнаяПо две отметки на отрезок Сложная
загружаем Python…
Вход
rows=2, cols=3, row_cuts=[4], col_cuts=[1, 2]
Ожидается
10

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 29 тестов на сервере, включая скрытые.