Изменения

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

R2Cmax

1189 байт добавлено, 21:14, 20 июня 2012
Нет описания правки
Тогда ответом на задачу будет минимум среди всех максимумов из <tex>j</tex> и <tex>dp[n][j]</tex>.
 
==Псевдокод==
<tex>maxTime \leftarrow 0 </tex>
for <tex>i = 1 \dots n</tex>
<tex>maxTime += p_1[i]</tex>
<tex>dp[][] \leftarrow INF</tex>
<tex>dp[0][0] \leftarrow 0 </tex>
for <tex>i = 1 \dots n</tex>
for <tex>j = 0 \dots maxTime </tex>
if <tex>(j - p_2[i] > 0) </tex> then
<tex>dp[i][j] \leftarrow \min (dp[i][j], dp[i-1][j - p_1[i]) </tex>
<tex>dp[i][j] \leftarrow \min (dp[i][j], dp[i-1][j] + p_2[i])</tex>
<tex>answer \leftarrow INF</tex>
for <tex> j = 0 \dots maxTime </tex>
<tex>answer \leftarrow \min (answer, \max(j, dp[n][j]))</tex>
 
==Время работы==
Время работы <tex>O(n * maxTime)</tex> {{---}} псевдополиномиальный алгоритм. Кроме того, если время выполнения работ, будет вещественные числа, то придется приводить их до целых, либо считать приблежённое значения.
 
==Литература==
J.K. Lenstra, A.H.G. Rinnooy Kan, and P. Brucker. Complexity
of machine scheduling problems. Annals of Discrete Mathematics,
1:343–362, 1977.
152
правки

Навигация