Ctrl K

Разломать шоколадку

Средняя
Шоколадная плитка состоит из rows × cols долек. Её нужно разломать на отдельные дольки. Между строками долек проходят rows - 1 горизонтальных линий разлома, между столбцами — cols - 1 вертикальных. Сломать кусок по горизонтальной линии i стоит row_lines[i], по вертикальной линии j — col_lines[j]. Цена зависит только от линии, а не от размера куска. За один шаг вы берёте любой кусок, который ещё не стал отдельной долькой, и ломаете его по одной линии, проходящей через него, — получается два куска. Если линия проходит через несколько кусков, ломать (и платить) придётся в каждом отдельно. Верните минимальную суммарную стоимость, за которую плитку можно разломать на дольки 1 × 1.
Пример 1
rows=2, cols=3, row_lines=[4], col_lines=[2, 6] → 18

Сначала самая дорогая линия: столбцовая линия 1 за 6. Затем строковая линия за 4 — она проходит через оба куска, это 4 + 4. Остаётся столбцовая линия 0 за 2 — её ломаем в двух кусках-строках: 2 + 2. Итого 6 + 8 + 4 = 18.

Пример 2
rows=3, cols=1, row_lines=[5, 1], col_lines=[] → 6

Плитка — одна полоска, каждую линию ломаем ровно один раз: 5 + 1 = 6.

Пример 3
rows=1, cols=1, row_lines=[], col_lines=[] → 0
Ограничения
  • 1 ≤ rows, cols ≤ 500
  • len(row_lines) = rows - 1
  • len(col_lines) = cols - 1
  • 1 ≤ row_lines[i], col_lines[j] ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОтменить как можно меньше встреч СредняяСамая длинная цепочка отрезков СредняяДобыча, которая делится на троих СредняяСамая сильная команда СредняяНаибольшее число, кратное трём Сложная
загружаем Python…
Вход
rows=2, cols=3, row_lines=[4], col_lines=[2, 6]
Ожидается
18

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