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

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

Подкиньте, пожалуйста, максимально много хороших задач на Декартово дерево для отработки.

upd: ну, не жадничайте, пожалуйста.

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

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

1846 1028 1090 1521 1439 1523

блок на информатиксе — сразу 6 задач.

И парочка задач с кф.
431E - Химический эксперимент
420D - Фокус со стаканчиками

P.S. Буду рад, если кто подкинет ещё задач с тимуса. Желательно, чтобы их нельзя было решить каким-нибудь деревом отрезков или Фенвика, как те, что я кинул :)

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Может быть 1316

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Кстати, было бы любопытно взглянуть на решение 1846 декартовым деревом, укладывающееся в TL.

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

      Вот

      Время: 0.39 Память: 5 216 КБ

      • »
        »
        »
        »
        10 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        а чем обусловлен такой способ делать приоритеты? просто в первый раз такое вижу.

        • »
          »
          »
          »
          »
          10 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

          Я хотел, чтобы приоритеты были случайные и разные. Вроде это самый простой способ такого добиться, памяти не жалко :)

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

        Забавно. Моё решение с добавлением и удалением через разрезание и склейку получало TL17 (515 мс). Решение с несколько оптимизированными добавлением и удалением, аналогичное вашему, получало TL18 (531 мс). Использовался msvc.

        Пошёл на тимус и переотправил первое решение на g++, получил AC (468 мс). Отправил ваше решение под msvc, получил AC (390 мс). Вновь отправил своё первое решение под msvc, получил AC (500 мс).

        Вроде бы уже отмечалось, что результаты на тимусе зависят от времени посылки и загруженности системы, но каждый раз этому удивляешься, как впервые. Особенно в задачах с таким жёстким TL.

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

        Эх, никак не могу получить АС с таким кодом.
        Пробовал srand(n) и случайную перестановку, как в коде выше, пробовал сдавать под разными компиляторами.
        Может быть, кто-нибудь мне подскажет какое-то очевидно (не для меня, естественно) замедляющее место?
        В любом случае, спасибо, увидел способ вставки/удаления явно более быстрый, чем разделение и склейка.

        • »
          »
          »
          »
          »
          10 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          После серии экспериментов выяснилось, что не всё так просто:

          TL18 (0.515 c, 4824 КБ)

          AC (0.343 c, 4824 КБ)

          (различие в строке 54)

          TL17 (0.515 с, 4824 КБ)

          AC (0.5 с, 4824 КБ)

          (различия в строках 54, 73, 74)

          Так что дело, по-видимому, ещё и в тестах. При разрезании одинаковые ключи существенно важно оставлять в левой части.

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится