  We consider the problem of supporting Rank() and Select() operations on a bit
vector of length m with n 1 bits. The problem is considered in the succinct
index model, where the bit vector is stored in "read-only" memory and an
additional data structure, called the index, is created during pre-processing
to help answer the above queries. We give asymptotically optimal
density-sensitive trade-offs, involving both m and n, that relate the size of
the index to the number of accesses to the bit vector (and processing time)
needed to answer the above queries. The results are particularly interesting
for the case where n = o(m).
