To improve your algorithm skills and get started with competitive programming, you should focus on learning the following mathematics topics:
Discrete Mathematics: This branch of mathematics deals with discrete objects, such as integers, graphs, and sets. It includes topics such as combinatorics, graph theory, and set theory, which is important for understanding algorithms and data structures.
Number Theory: Number theory is the branch of mathematics that deals with the properties of integers. It includes topics such as prime numbers, modular arithmetic, and number-theoretic algorithms, which are used in cryptography and other areas of computer science.
Combinatorics: This branch of mathematics deals with counting, arranging, and partitioning of objects. The concepts of combinatorics can be useful for solving problems involving permutations and combinations.
Linear Algebra: Linear algebra is a branch of mathematics that deals with the manipulation of vectors and matrices. It includes topics such as matrix operations, linear equations, and eigenvalues, which are useful for understanding machine learning, optimization, and computer graphics.
Calculus: Calculus is a branch of mathematics that deals with the study of rates of change and the accumulation of quantities. It includes concepts such as derivatives, integrals, and optimization, which are important for understanding algorithms that involve continuous data and optimization problems.
It is not necessary to master all these topics but having a good understanding of them will help you to understand the underlying mathematical concepts of algorithms. Practice with problems and examples will help you to improve your skills and understand how the concepts can be applied.