Максимальное количество подобных групп данного размера, которое можно сделать из данного массива

cs.stackexchange https://cs.stackexchange.com/questions/119441

Вопрос

Мне дают множество номеров, не обязательно уникально, а размер группы. Пусть массив будет обозначаться от $ B $ и размер группы Be $ A $ . .

Мне нужно найти максимальное количество групп с той же содержанием и размером $ a $ , который можно сделать из элементов $ b $ . Как только элемент используется в группе, она исчерпана. Группа может иметь более одного элемента с тем же значением, если элемент все еще доступен в $ B $ .

Пример:

  1. Если входной массив является $ \ {1, 2, 3, 1, 2, 3, 4 \} $ , и размер группы <= «Математический контейнер»> $ 3 $ Максимальное количество групп, которые могут быть сделаны, является $ 2 $ , которые находятся $ \ {1, 2, 3 \} $ .
  2. Если входной массив является $ \ {1, 3, 3, 3, 6, 3, 10 \} $ , и размер группы <= «Математический контейнер»> $ 4 $ Максимальное количество групп, которые могут быть сделаны, является $ 1 $ , который является $ \ {1, 3, 3, 3 \} $ .
  3. То, что я пробовал до сих пор, - это отдать некоторые уравнения (приведены ниже), но после этого я изо всех сил пытаюсь придумать алгоритм для их решения.

    Пусть $ f_1 $ Будьте частотой элемента $ b_1 $ , $ f_2 $ Быть частотой элемента $ b_2 $ и так далее до $ B_n $ , где $ b_1 \ dots b_n $ - это различные элементы из массива $ B $ .

    Теперь мне нужно выбрать $ n_1, n_2, \ dots n_i $ такой, что

    1. $ n_1 + n_2 + \ dots + n_i= A $
    2. $ k \ cdot n_1 \ leq f_1 \ text {,} k \ cdot n_2 \ leq f_2 \ text {,} \ dots \ text {,} k \ cdot n_i \ leq f_i $
    3. $ K $ - это количество групп, и нам нужно максимизировать его.
    4. Длина $ b $ может быть такой же большой, как 10 ^ 5 $ и $ a $ также может быть такой же большой, как $ 10 ^ 5 $ .

      Пожалуйста, помогите мне найти жадный или динамичный подход к проблеме.

Это было полезно?

Решение

Функция $$ f: \ mathbb {n} \ priverarrow \ {0, 1 \}: f (k)= \ начать {случаи} 1; & \ Text {Если есть решение размера $ K $,} \\ 0; & \ Text {в противном случае} \ end {случаи} $$ Монотон, поскольку если нет решения размера $ K $ Тогда нет решения размера $ k + 1 $ . Это означает, что мы можем бинарные поиски значения $ k $ в интервале $ [1, | B |] $ , и выведите наибольший $ K $ , для которого есть решение размера $ K $ . Таким образом, мы повернули проблему в решение решений с помощью $ O (\ log | B |) $ faction в течение времени работы.

Для фиксированного значения $ k $ достаточно жадного решения. Если у нас есть $ f_i $ Копии некоторых элементов $ b_i $ , затем каждый набор может содержать максимально < Spaness Class="Математический контейнер"> $ \ Left \ lfloor \ frac {f_i} {k} \ vant \ Rfloor $ этого элемента. Таким образом, у нас есть решение размера $ K $ Если и только если $$ \ sum \ limits_ {i= 1} ^ {n} \ fleal \ lfloor \ frac {f_i} {k} \ vant \ Rfloor \ geq a. $$

как упражнение, попробуйте доказать, что жадный раствор оптимален. Время работы может быть ограничено в $ O (| B | \ log | b |). $

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top