Изменения

Перейти к: навигация, поиск

R2Cmax

1104 байта добавлено, 20:48, 20 июня 2012
Эффективное решение
Применим для решения данной задачи динамическое программирование.
Будем считать <tex>dp[i][j]</tex>, в котором будем хранить минимально время выполнения работ на втором станке, где <tex>i</tex> означает, что мы рассмотрели <tex>i</tex> работ, а <tex>j</tex> с каким временем выполнения работ на первом станке. Тогда <tex>j</tex> не превосходит суммы выполнения работ на первом станке.
Изначальное значение <tex>dp[0][0] = 0</tex>, а всё остальную таблицу проинициализируем бесконечностью. Допустим мы посчитали динамику для <tex>i-1</tex> работ. Теперь надо пересчитать её для <tex>i</tex>-ой работы. Переберём время выполнения работ на первом станке и посчитаем какое минимально время выполнения мы можем получить при на втором станке при фиксированном первом времени. Так как <tex>i</tex>-ю работу мы можем выполнить либо на первом станке, либо на втором, то <tex>dp[i][j]= \min(dp[i-1][j-p_1[i]], dp[i-1][j]+p_2[i])</tex>. Тогда ответом на задачу будет минимум среди всех максимумов из <tex>j</tex> и <tex>dp[n][j]</tex>.
152
правки

Навигация