Мне нужен алго для этой проблемы ?
Шеф-повар является мульти-талантливый. Он разработал лекарство от коронавируса под названием CO-VAC-19. Теперь, когда все в мире заражены, пришло время эффективно распространить его по всему миру, чтобы стереть коронавирус с лица земли. Шеф-повар просто готовит лекарство, вы-его менеджер по дистрибуции.
In the world, there are N countries (numbered 1 through N) with populations a1,a2,…,aN. Each cure can be used to cure one infected person once. Due to lock down rules, you may only deliver cures to one country per day, but you may choose that country arbitrarily and independently on each day. Days are numbered by positive integers. On day 1, Chef has x cures ready. On each subsequent day, Chef can supply twice the number of cures that were delivered (i.e. people that were cured) on the previous day. Chef cannot supply leftovers from the previous or any earlier day, as the cures expire in a day. The number of cures delivered to some country on some day cannot превысить число инфицированных людей, которые в настоящее время у него есть, либо.
Однако коронавирус так просто не сдается. Он может заразить вылеченного человека, который снова вступает в контакт с инфицированным человеком ― формально это означает, что число инфицированных людей в стране удваивается в конце каждого дня, то есть после того, как используются лекарства для этого дня (очевидно, до населения этой страны).
Найдите минимальное количество дней, необходимое для того, чтобы сделать мир свободным от короны.
Что я уже пробовал:
Нам был дан отсортированный (в неубывающем порядке) список из N положительных целых чисел (A1, A2 , ...., An) и еще одного положительного целого числа X . Мы должны сделать все целые числа списка равными нулю, используя целое число X. Но для этого есть некоторые условия:
Условие 1 : за один раз мы можем вычесть X только до одного целого числа в списке (Ai).
Условие 2 : после каждой операции (условия 1) все целые числа списка удваиваются, а также X удваивается.
Условие 3 : Если X больше Ai, то значение X изменяется на Ai, а затем происходит вычитание.
Что нужно найти : нам нужно найти минимальные операции, чтобы сделать все целые числа в списке нулевыми.
Образец для лучшего понимания :
List : 1 2 3 4 5 X : 4
Здесь, чтобы найти наиболее оптимальное решение, мы сначала сделаем 4 в ноль, используя X.
Operation cost = 1
Теперь каждое целое число будет удвоено, следовательно, новый список будет
2 4 6 0 10, X = 8 2 4 6 0 2, X = 8 (subtracting 10 - 8) Operation cost = 2
Опять же каждая вещь удваивается так что новый список это
4 8 12 0 4 , X = 16 4 8 0 0 4, X = 12` (as 12 < 16, X becomes 12) Operation cost = 3
Опять же каждая вещь удваивается так что новый список это
8 16 0 0 8, X = 24 8 0 0 0 8, X = 16 (as 16 < 24, X becomes 16) Operation cost = 4
Опять же каждая вещь удваивается так что новый список это
16 0 0 0 16, X = 32
16 0 0 0 0, X = 16 (как 16 < 32, X становится 16) эксплуатационные расходы = 5
Опять же каждая вещь удваивается так что новый список это
32 0 0 0 0, X = 32 0 0 0 0 0, X = 32 (as 32 <= 32, X becomes 32) Operation cost = 6
Итак, в итоге за 6 операций мы сделали список нулевым.
Еще несколько случаев с ответами :
List : 10 20 30 40 50 X : 1 Answer : 9
List : 1 20 110 X : 10 Answer : 6
Constraints : (1 <= Ai<= 1000000000) , (1 <= X <= 1000000000)
Свой подход
- Позволять
aбудьте целым числом в списке, и x дано, чтобы превратить " а " в ноль.
- Теперь после каждой операции будет формироваться серия, как указано ниже
(a-x) , (2(a-x) - 2x) , (2(2(a-x) - 2x) - 4x) , .......... (a-x) , (2a - 4x) , (4a - 12x), (8a - 32x) , ..... (a-x) , 2(a-2x) , 4(a-3x) , 8(a-4x) , ....... an = (2^(n-1))(a-nx) | where an is nth term
Так что сделать
An == 0 , A-nx = 0, A = n/x
Я выяснил, как сделать любое единственное целое число нулевым с помощью x, но я не могу понять, как сделать список нулевым с минимальными операциями, так как я должен сделать код для этого также, Так что мне нужен базовый алгоритм, который может быть использован для решения этой проблемы.
Может ли кто-нибудь помочь мне с этим ??
Patrice T
Конкурс от https://www.codechef.com/JULY20B/problems/DRCHEF[^]