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

Автор timur_jalgasbaev, история, 5 часов назад, По-русски

Я думал что unordered_map быстрее чем map в cpp, но до этого случая..: Во вчерашнем соревнований Div3 в задаче D я использовал unordered_map для хранения элементов, думая что это будет быстрее, но кто-то взломал мой код, а моего друг который имел почти такой же код, но использовавший map вместо unordered_map, не смогли взломать. Почему моего кода взломали, ведь unordered_map быстрее чем просто map, не так ли? Я не смог достичь чёткого ответа этому вопросу. Так что прошу от уважаемого сообщества Codeforces, почему так вышло? Заранее спасибо, за ответ.

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

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

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

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

unordered_map is basically O(1) for "random" inputs, but since the problemsetters/(people who make hacks) know that people will try using it, they can basically make an input that will "break" the unordered map and make it O(n) per access. Map on the other hand is always O(logn), and so its alot more safe to use.

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

I did the exact same thing. This article explains very well why the unordered_map fails and also discuss the solution to avoid such hacks in the future.

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

Auto comment: topic has been updated by timur_jalgasbaev (previous revision, new revision, compare).

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

Using gp_hash_table<int,int>mp works better than unordered_map because in the worst case, gp_hash_table operates in O(1), while unordered_map can degrade to O(n).Therefore, gp_hash_table is a better choise than unordered_map. If you use gp_hash_table, you need to include the following headers:

#include<ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
  • »
    »
    2 часа назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    The article referenced above says it is even easier to hack than unordered_map.