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

Автор Russian, 10 лет назад, По-русски
  • что я могу сделать чтоб моя программа работала быстрее ?
  • задача — 61E - Enemy is weak
  • код — 6713532
  • Проголосовать: нравится
  • +6
  • Проголосовать: не нравится

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

Since N is <=1000000 you can make the numbers smaller in range [1...N] and then make your end=N.
Example:
Before
4
10 8 3 1
After
4
4 3 2 1

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

О, количество 3-инверсий. Прикольно.

Если кому интересно, вот задача для более общего случая 1523

P.S. Буду признателен, если кто-то пояснит, почему моё решение ловит RTE 21

UPD: Забудьте :) Я уже просто забыл как оно работает и не понимал, что обращаюсь к числам в позиции до 1е9.

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

You can easily solve it by using that formula!!

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

I realy dont know it brother. If i udrestand it i will help to you :-D

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

Сожми координаты.

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

Поменять map на unordered_map и выбрать компилятор со стандартом C++0x.

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

    What is the difference between map and unordered_map ?

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

      They do the same thing, but differ in performance. For std::map, search/insert/remove is in both the average and the worst case. For std::unordered_map, search/insert/remove is O(1) on average, but O(n) in the worst case. Also, as it follows from the name, in std::unordered_map the elements are not ordered in any particular order.

      std::map is typically implemented as a balanced binary tree, and std::unordered_map is implemented as a hashtable.

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

Очень странно, что два дерева фенвика не заходят ( Я думал, что они будут самыми быстрыми ). Можно попробовать переписать ваше решение через два дерева отрезков (правда скорее всего нерекурсивное, рекурсия не зайдет). А можно через два декартовых дерева по явному ключу 6714050 но тогда нужно очень оптимально их использовать, а то не зайдёт 6713978.

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

    Вполне нормально они заходят, если координаты сжать.

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

      Я имел ввиду сжатые координаты без map. У него вообще что-то странное. Он сжимает map'om, что не очень эффективно. Мне кажется, что лучше чем-нибудь посортить копию массива за O(n*log(n)) по возрастанию. Потом числу b[i] ( это копия массива а отсортированная ) будет соответствовать число i. Потом идем по массиву а и дихой по массиву b вычисляем позицию pos числа a[i] в массиве b. И делаем a[i]=pos. Вот сжатие готово. А массив, а не нарушился с точки зрения условия задачи.

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

Кстати, может тут есть знатоки — реально сделать дерево Фенвика по несжатым координатам на O(QlogC) памяти и O(logC) на запрос без unordered_map и подобных структур? Я так понимаю, даже если реально, оно уже потеряет своё преимущество в скорости?

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

молись!