Блог пользователя kinol

Автор kinol, 9 лет назад, По-русски

Всем добрый день!

Недавно я наткнулся на такую задачу: найти среди данных N точек две, наиболее удалённые друг от друга по сумме разностей абсолютных значений координат в трёхмерном пространстве(N < 10^6). Она решается перебором всех 8 возможных постановок знаков при раскрытии модулей, после чего для каждого случая ищется наибольшее и наименьшее значения в точках, которые потом вычитаются друг из друга, после чего из полученных 8 чисел берётся максимум. Но что делать, если размерность пространства больше 3?

Первый подход к задаче может заключаться в переборе всех пар точек и вычислению манхеттенских расстояний между ними — асимптотика O(K*N^2), где K — размерность пространства. Второй метод(как в решении исходной задачи) — перебрать все 2^K способов раскрытия модулей, для каждого из них найти пару наиболее удалённых точек за 1 проход, после чего из полученных 2^K значений выбрать максимум. Асимптотика — O(K*N*2^K). Однако при K>20 оба этих метода уже не годятся. Собственно меня интересует, есть ли более быстрые способы решить эту задачу? В идеале хотелось бы чего-то вроде O(N*polylog(N)*polynom(K)), но буду рад, если кто-нибудь предложит и что-нибудь промежуточное вроде O(K*N*sqrt(N))

Полный текст и комментарии »

  • Проголосовать: нравится
  • +10
  • Проголосовать: не нравится

Автор kinol, 10 лет назад, По-русски

Доброго времени суток!

Сегодня я решил порешать простую с виду задачу: всего лишь посчитать факториал числа n

Однако столкнулся с той трудностью, что не могу это сделать за что-либо более быстрое, чем O(n^2logn)(хотя мне кажется, что у меня есть идея чего-то похожего на метод разделяй и властвуй за O(nlog^3n), но я не уверен)

Собственно мне интересно, за сколько можно решить эту задачу:) Буду рад услышать любые асимптотически более быстрые решения, чем O(n^2logn)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +22
  • Проголосовать: не нравится