Per farti capire dove è l'errore vado a creare un file con un solo carattere:
max@studio:~/tmp/x> hexdump -C test1
00000000  61 0a                                             |a.|
00000002
Qui puoi notare il carattere 'a' seguito da un Line Feed. Ora vado a comprimerlo e ottengo:
max@studio:~/tmp/x> hexdump -C test1.huf
00000000  00 03 0a 00 00 00 01 61  00 00 00 01 ff 00 00 00  |.......a........|
00000010  01 00 00 00 05 e0                                 |......|
00000016
I primi due bytes sono il numero di tabelle immesse e quì non ci siamo - dovrebbe essere 2 e non 3 -
Seguono 2 tabelle corrette + 1 tabella con un bel carattere 'FF' (fine file) -che ovviamente non centra niente-
Poi ci sono i tuoi 
n_bit che sono maggiori di 1 per l'elemento indesiderato
(per patchare il codice di decodifica era sufficiente decrementare n_bit di 1)
Per correggere il problema nella codifica, devi modificare la tua funzione 
conta_occorrenze per non inserire il 'FF'
void conta_occorrenze(int v[],ifstream &input)
{
    unsigned char c;
    while ((c=input.get())!=0xff)
      v[c]++;
}
Verifichiamo ora la modifica sulla funzione di codifica...
max@studio:~/tmp/x> hexdump -C test1.huf
00000000  00 02 0a 00 00 00 01 61  00 00 00 01 00 00 00 02  |.......a........|
00000010  80                                                |.|
00000011
Questo è il tuo file huf modificato. Possiamo vedere che il numero delle tabelle è 2 ed è sparito 'FF'... proviamo la decodifica e controlliamo...
max@studio:~/tmp/x> ll test1*
-rw-r--r-- 1 max users  2  6 gen 22:51 test1
-rw-r--r-- 1 max users 17  8 gen 13:46 test1.huf
-rw-r--r-- 1 max users  2  8 gen 13:54 test1.out
max@studio:~/tmp/x>
max@studio:~/tmp/x> diff test1 test1.out
max@studio:~/tmp/x>
max@studio:~/tmp/x> hexdump -C test1.out
00000000  61 0a                                             |a.|
00000002
Ora proviamo con un file + grande... utilizziamo un sorgente cpp ... comprimiamo e decomprimiamo
max@studio:~/tmp/x> ll a.cpp*
-rw-r--r-- 1 max users 18177  8 gen 13:46 a.cpp
-rw-r--r-- 1 max users 11077  8 gen 13:59 a.cpp.huf
-rw-r--r-- 1 max users 18177  8 gen 13:59 a.cpp.out
max@studio:~/tmp/x>
max@studio:~/tmp/x> diff a.cpp a.cpp.out
max@studio:~/tmp/x>
Passo e chiudo,
Max