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

Автор mr146, 14 лет назад, По-русски
Как хранить построенный бор в памяти максимально сжато?
Текущая структурка:
struct Vertex
{
     list<pair<char, int> > next;
     int link, prev, near;
     char prevc;
}v[100500];
Бор на словаре из не слов суммарной длинны не более 100000. Надо вжать в 8мб.
Как это сделать? =)
  • Проголосовать: нравится
  • +4
  • Проголосовать: не нравится

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

У нас сдано так:

char tmp[2000000];

struct Dyn{
int Cnt;
int Nxt;
};

#define MAX 2000000

//Bour
char tChar[MAX];
int tNbr[MAX];
int tLng[MAX];

Может показаться, что это не пройдёт по памяти, но тут массивы используются не полностью. Тимус оценил занятость памяти в 2 312 КБ.

  • 14 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я сделал один глобальный мап для переходов и прошло.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
можно за несколько проходов сделать, не обязательно все сразу пехать в бор.
14 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
кое-где можно использовать short вместо int
»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I know its late, however, I had the same problem. I tried different approaches, the best I got was using a global hash table, but this got me MLE at test 10. Did you manage to solve the problem ? If so, what was your approach ?

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

еще вроде бы можно на одной большой хэш таблице все делать ;)