Максимизируйте значение выражения [ij – K.(Ai | Aj)] по всем парам (i, j) в заданном массиве

Опубликовано: 19 Сентября, 2022

Дан массив A [] длины N и целое число K. Задача состоит в том, чтобы максимизировать значение выражения [ij – K.(A i | A j )] по всем парам (i, j) в заданном массиве, где ( 1i < jN) и | обозначает побитовый оператор ИЛИ .

Примеры:

Input: A[] = {5, 20, 1, 0, 8, 11}, K = 10
Output: 2
Explanation: The maximum value of the expression f(i, j) = i.j – K.(A[i] | A[j]) can be found for below pair:
f(3, 4) = 3.4 – 10.(1 | 0) = 2

Input: A[] = {1, 5, 6, 7, 8, 19}, K = 3
Output: -9

Подход: Необходимо сделать следующие замечания:

Let f(i, j) = i.j – K.(Ai | Aj)

=> Notice that for f(i, j) to be maximum, i.j should be maximum and K.(Ai | Aj) should be minimum.
=> Thus, in the best case, f(i, j) will be maximum if 
      => K.(Ai | Aj) is equal to 0
      => i = (N-1) and j = N.
=> So, the maximum value of the expression can be f(i, j) = (N-1)*N.

=> Also, the minimum value will be obtained by subtracting the maximum value of K.(Ai | Aj) from (N-1)*N

=> It is known that 
a | b < 2*max(a, b) where | is the bitwise OR operator

Из приведенного выше свойства и заданных ограничений можно сделать вывод:

  • Максимальное значение (A i | A j ) может быть 2*N . потому что (0A iN)
  • Максимальное значение K может быть 100, потому что (1Kmin(N, 100)) .
  • Итак, минимальное значение f(i, j) будет:

f(i, j) = (N-1)*N – K*(Ai | Aj)
       = (N-1)*N – 100*2*N
       = N*(N – 201)

  • Легко заметить, что результирующий ответ всегда будет лежать между:

N*(N-201) <= ans <= (N-1)*N

  • Также обратите внимание, что для i = N – 201 и j = N
    • максимальное значение f(i, j) будет N*(N – 201) ,
    • что, в свою очередь, является минимальным значением f(i, j) для i = N – 1 и j = N .
    • Таким образом, максимальное значение выражения должно быть проверено от i = N – 201 до i = N и от j = i+1 до j = N.

Ниже приведена реализация вышеуказанного подхода:


Временная сложность: O(N 2 )
Вспомогательное пространство: О(1)

РЕКОМЕНДУЕМЫЕ СТАТЬИ