A dynamic programming-based technique for multi-class job scheduling on a single machine