Нужно очень хорошо знать дискретную математику.
Также изучи паттерны проектирования.
Не уверен что это действительно часто используется в спортивном программировании, но думаю будет полезно.
Более подробно ТУТ