Изменения

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

Pintreepi1Lmax

33 байта убрано, 22:58, 30 мая 2016
Второй шаг
==== Первый шаг ====
На первом шаге мы релаксируем дедлайны всех работ, кроме листовой, в соответствии с предыдущим пунктом.
* В массиве <tex>\mathtt d</tex> хранятся дедлайны работ.* В массиве <tex>\mathtt {parents}</tex> {{---}} массив массивов предков* <tex>\mathtt {child}i</tex> {{---}} массив детейй работы.* В переменной <tex>\mathtt i</tex> хранится номер лист листа (он один, см. условие задачи).
'''Deque<int>''' deque = <tex>\varnothing</tex>
deque.push(i)
* Массив <tex>\mathtt q</tex> хранит информацию о количестве работ, готовых к исполнению (находящихся в очереди) в момент времени <tex>t</tex>.
* Массив <tex>\mathtt x</tex> хранит информацию о начале выполнения работы <tex>i</tex>.
* В массиве <tex>\mathtt {child}</tex> хранится индекс ребенка <tex>i</tex>-й работы.
F = 0
'''if''' q[t] == m
F = t + 1
'''Jobint''' j = child[i.child]
r[j] = max(r[j], t + 1)
В результате ответ можно получить, зная конечный массив <tex>\mathtt x</tex> и делайны работ: <tex>L_{max} = \max\limits_i (\mathtt x[i] + 1 - d_{i}</tex>), так как все работы выполняются единицу времени, следовательно, <tex>C_{i} = \mathtt x[i] + 1</tex>. Можно заметить, что при вычислении ответа неважно, какие дедлайны использовать, начальные или релаксированные, потому что для любого <tex>k</tex> и его предка <tex>i</tex> либо производится релаксация и выполняется равенство <tex> d_{k} = d_{i} - 1</tex>, а значит, после релаксации максимум не изменится, поскольку при замене дедлайна на меньший максимум увеличится, а новое значение <tex>L_{k}</tex> будет равно <tex>L_{i}</tex>. (При условии, что существует правильное расписание. Если изначально было опоздание в вершине <tex>k</tex>либо мы не делали релаксацию, то и значение <tex>d_{k}</tex>, и, следовательно, <tex>L_{k}</tex> не поменяются в соответствии с алгоритмом).
=== Доказательство корректности ===
317
правок

Навигация