Although solving practice problems is the most direct way to get better at competitive programming, learning discrete math provides a foundation for understanding algorithm topics:
What math courses should I self-study to do very well in programming competitions like HashCode, Codeforces, and TopCoder? (answer)
I’m doing most of my writing on Quora this year. For more information, see A Project for 2020.