У меня есть массив n
автозаправочных станций D[]
на шоссе, что D[i]
является расстояние от станции i
с начала шоссе.Алгоритм, подобный бензоколонке, с минимальными затратами? Жадный или ДП?
У меня также есть ряд издержек C[]
, так что C[i]
- это стоимость моего автомобиля, обслуживаемого на станции i
.
Мне нужно, чтобы мой автомобиль обслуживался на первой станции, а мой автомобиль может проехать не более 100 миль между станциями.
Каков наиболее эффективный алгоритм, который можно получить от начала шоссе до конца с наименьшими затратами (мне нужно знать, на каких станциях останавливаться)? Я был в состоянии найти жадное решение для минимизации количества остановок, но при минимальных затратах, я имею в вид DP, с оптимальной подзадачей:
bestcost[j] = min(0<i<j bestcost[i] + C[j] s.t. D[j]-D[i] <= 100)
и имею отдельный массив last[j]
, содержащие последнюю станцию который останавливается, что было бы лучшим i
сверху подзадачи.
Будет ли это правильным подходом или есть лучшее решение Greedy/DP?
Я не вижу жадного решения. Повторение DP правильное. Вы можете получить runtime 'O (n)' с монотонной очередью, которая позволяет вам найти min в 'O (1)', что является оптимальным, а также имеет низкий постоянный коэффициент. Это даже работает, если диапазон вашего велосипеда не постоянный. –
@NiklasB. на самом деле его решение жадное, на каждой остановке он будет искать лучший вариант, используя только стоимость. Его решение отлично работает, за исключением того, что оно не оптимально, поскольку он не рассматривает, сколько газа существует на каждом расстоянии и сколько он может повторите заполнение этой ценой, сделайте проблему здесь более сложной и сделайте более дешевую цену за газ-блок не всегда лучшим вариантом для остановки –
@KhaledAKhunaifer, пожалуйста, внимательно прочитайте мой вопрос, я не думаю, насколько газ существует, потому что это не проблема бензоколонки, а вариация. Это проблема с сервисной станцией, когда мне приходится фиксировать расходы 'C [i]' каждый раз, когда я останавливаюсь на данной станции 'i'. – Anagha