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

Автор waipoli, история, 11 месяцев назад, По-русски

Дан массив целых чисел a(len(a) < 10^5, 1 <= a[i] <= 10^9)

дано q запросов двух типов

В первом из них заданы два числа x(0 <= x < len(a)) и y(1 <= y <= 10^9) требуется изменить елемент массива а с позицией x на y

Во втором же заданы два числа: l,r(0 <= l < len(a), 0<= r < len(a), l < r) требуется найти два разных таких индекса x1,x2 принадлежащих отрезку от l до r включительно таких что их НОД будет максимально возмжным из всех пар(вывести его)

Я умею решать эту задачу полным перебором O(q*n^2) но мне лично интересно узнать есть ли решение за нормальную асимптотику(O(q*log(N))).

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

»
11 месяцев назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

Auto comment: topic has been translated by waipoli (original revision, translated revision, compare)

»
11 месяцев назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

секунды?

  • »
    »
    11 месяцев назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Неуверен что правильно понял ваш вопрос, можете уточнить?

    • »
      »
      »
      11 месяцев назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      Я бы хотел узнать лимит на секунды, у меня есть идея но она возможно не влезет в лимит секунд

      • »
        »
        »
        »
        11 месяцев назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится

        Я думаю что да секунды 2, но тут больше вопрос в идее

»
11 месяцев назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Слишком много хочешь, запрос за логарифм это как-то слишком круто, думаю круче чем за линию не получится

  • »
    »
    11 месяцев назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Возможно

  • »
    »
    11 месяцев назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    А как за линию? :)

    • »
      »
      »
      11 месяцев назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      Лично я лучше чем q*N*³✓N*logN не придумала, надеюсь кто-то всё таки улучшит асимптотику

      • »
        »
        »
        »
        11 месяцев назад, # ^ |
          Проголосовать: нравится +9 Проголосовать: не нравится

        $$$\sqrt[3]n$$$? Но тут $$$a[i] \leq 10^9$$$, даже решить задачу на 1 запрос с ограничениями автора никак не выйдет, но я могу предложить решение, которое реально решает задачу автора, если $$$a[i] \leq n$$$. Сначала решим задачу без обновлений, будем использовать алгоритм Мо, все довольно просто: проходимся по делителям числа, изменяем счетчик для каждого делителя и потом находим максимум среди тех, где счетчик $$$\geq 2$$$. Однако нужно быстро находить максимум, но сет держать не можем, поэтому сделаем корнячку, как в https://codeforces.com/blog/entry/83248 и теперь можно находить ответ на запрос за $$$\sqrt n$$$. Пора добавить обновления, для этого просто перепишем все на 3D Мо, условно как в разборе 940F и задача решена!

        Разбор 940F

        Асимптотика $$$O(n^{5/3})*128$$$, так как максимальное количество делителей среди чисел $$$\leq 10^5$$$ — это 128.

»
11 месяцев назад, # |
Rev. 3   Проголосовать: нравится +5 Проголосовать: не нравится

,