Approximation algorithms for partial covering problems