0% found this document useful (0 votes)
17 views8 pages

Comprehensive Competitive Programming Course

The document outlines a structured training program for competitive programming (CP) divided into three phases: Beginner, Intermediate, and Advanced, each lasting 16 weeks but to be completed within 8 months. It includes weekly topics, prerequisites, and problem-solving practices to enhance coding skills, covering various algorithms, data structures, and mathematical concepts. Additionally, it emphasizes the importance of problem ratings and encourages participants to solve progressively challenging problems to improve their skills.

Uploaded by

arif.cse
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views8 pages

Comprehensive Competitive Programming Course

The document outlines a structured training program for competitive programming (CP) divided into three phases: Beginner, Intermediate, and Advanced, each lasting 16 weeks but to be completed within 8 months. It includes weekly topics, prerequisites, and problem-solving practices to enhance coding skills, covering various algorithms, data structures, and mathematical concepts. Additionally, it emphasizes the importance of problem ratings and encourages participants to solve progressively challenging problems to improve their skills.

Uploaded by

arif.cse
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as XLSX, PDF, TXT or read online on Scribd

- The duration of each phase is 16 weeks but should be completed within 8 months (

Enrollment more time to do other stuff they love to do.


[Link]
For Prize [Link]

Title Beginner Intermediate


You know nothing. The only thing you - You know everything from the
Prerequisites know is that "CP is Fun". Beginner phase.
- What the heck is CP? - Undirected/Directed Graphs, Trees,
- Why bother to learn it when I can Types of graphs etc definitions
play a new game with that time? - Adjacency Matrix and Lists
- What is ICPC? - DFS, BFS
- What if I can't be very good at CP? - DFS Tree
- We need a language - Graph Coloring, connected
- Why C++ is the best components
- Variables - Diameter of a tree
- Operators
Week 1 - Conditions
- Where to write codes? What are the
best IDEs?
- QnA
- No contest for this week, just learn
to install an IDE and run a code.

- Loops. - Primes
- Functions - GCD and LCM
- What is a problem? - Trick with subarray gcd (logn different
- What is meant by AC, WA, TLE... gcds)
etc? - Sieve and factorization
Week 2 - Demo solving some very basic - Number of divisors
problems. - Euler Totient Funtion
- Intro to Vjudge because we will host
contests on Vjudge.
- QnA
- Complexity Analysis(Time and - Basic math
Space). - Matrix Exponentiation
- Basic of Binary Number/Bitwise
Operations (Just anintro to the
operations)
- Intro to arrays, subarrays and
subsequences.
- Intro to strings, substrings and
subsequences.
- Reverse of an array/a string
- Sum of an array
- Check if a string is palindrome or not
Week 3 - Maximum and minimum of an array
- Max frequency of elements of an
array
- Positive vs non-negative
- Problems with multiple testcases
- Discussion about what speicific
problems students are facing
- QnA

- Recursions
- How do contests work? - Intro to DP
- What are some famous online - 0/1 Knapsack
judges? - Longest Common Subsequence
- CF ratings - DP with output tracking
- The OP header: "bits/stdc++.h"
- Why should you use "using
Week 4 namespace std"
- Int Overflows
- Double and basic functions(floor,
ceil, round)
- Demo solving some very basic
problems.
- QnA

- Sparse Table
- Hugeeee input, what can be done? - LCA
Intro to Fast I/O.
- Don't use endl.
- Builtin Functions
- Swap two variables without using a
third variable
- Prefix Sum
Week 5 - Basic recursions and functions
- Problems with multiple solutions,
- How do Codeforces' contests work?
- Problem Rating and Sorting using
problem rating
- Good Coding Style
- Auto, Pair, Struct - KMP
- String - Prefix Automaton
- Multidimensional arrays - String Hashing
- Pointers - Gp Hash Table
- Vector
Week 6 - List
- Stack
- Queue

- Deque - Ternary Search (on doubles and


- Priority Queue integers)
Week 7 - Set, Unordered Set and Multiset - Coordinate Compression
- Map, Unordered Map - Pigeonhole Principle
- Backtracking
- Linear Search, Binary Search, - Combinatorics Basics
Lower Bound, Upper Bound
Week 8 - Bubble Sort
- Counting Sort
- Merge Sort - DSU and small to large technique
- Divide and Conquer - Dijkstra
Week 9 - C++ sort
- Lexicographical sort
- Taking input until EOF
- Solving various problems from - Segmented Sieve
Week 10 previous contests - Extended Euclid, Linear Diophantine
- Bit manipulation - Probabilities
- Bitset - Expected Value
- Subset enumeration
- Common mistakes, local and global
declaration
Week 11 - How taking input works. Hassle with
%c.
- custom comparator, strict
comparison
- Local big size array in codeblocks

- Intro to Greedy - Kadane's Algorithm


- Activity Selection Problem - Difference array
- [Link] - LIS in O(n^2) and O(n log n)
10020
Week 12
- Intro to Constructive algorithms
- How to debug(just print) and The
Art of Debugging (Bonus)

- Intro - Segment Tree


- Overflow in modular mul - Segment Tree Lazy
- Bigmod - Intro to BIT
- Mulmod - Order statistics tree and the number of
Week 13
- Modular inverse inversions.
- Practice Problems
- Stress Testing (Bonus)

Solve problems such that problem - Trie


Week 14 rating >= (your current rating + 200) - Trie xor max/min
Solve problems such that problem - Two Pointers
Week 15 rating >= (your current rating + 200) - Sliding Window
- Monotonous queue
Solve problems such that problem - Geometry Basics
Week 16 rating >= (your current rating + 200)
Solve problems such that problem Solve problems such that problem
Week 17 rating >= (your current rating + 200) rating >= (your current rating + 200)
Solve problems such that problem Solve problems such that problem
Week 18 rating >= (your current rating + 200) rating >= (your current rating + 200)
Solve problems such that problem Solve problems such that problem
Week 19 rating >= (your current rating + 200) rating >= (your current rating + 200)
All classes have been Solve problems such that problem Solve problems such that problem
taken but we have time rating >= (your current rating + 200) rating >= (your current rating + 200)
completed within 8 months (the current year plan of SUST) to give the students

Advanced God
- You know everything from the Beginner - You know everything from all the phases
and Intermediate phase.
- Geometry basic to Medium: Part 1 Solve Problems, do lots of team contests and learn few topics from here: [Link]

- Geometry basic to Medium: Part 2


- Floyd Warshall
- MST
- SCC, Articulation Points and Bridges

- Inclusion Exclusion
- Interactive Problems

- Bitmask DP
- SOS DP
- Digit DP
- Queries on tree (Euler tour technique)
- Tree DP

- Sqrt Decomposition
- MO's

- Suffix Array

- Game Theory
- Grundy Numbers

- Meet in the middle


- Aho Corasick
- FFT
- NTT
- FWHT

- Gaussian Elimination
- Basis Vector

Graph Theory Hard

Number Theory Hard


Math Hard

DP Hard

Data Structures Hard

Strings Hard

Geo Hard

Solve problems such that problem rating


>= (your current rating + 200)

Common questions

Powered by AI

Undirected graphs represent relationships where connections are bidirectional, such as social networks, where a friendship is mutual. Directed graphs, on the other hand, represent one-way relationships, useful in scenarios like web page linking where one page may link to another without reciprocation. Applications of undirected graphs include finding connected components, while directed graphs are essential for understanding processes like task scheduling, where direction indicates precedence .

Binary Search has a complexity of O(log n) because it splits the search interval in half each time, making it much faster on sorted arrays compared to Linear Search, which has a complexity of O(n) as it checks each element. Binary Search is suitable for problems involving sorted datasets where efficiencies are needed, whereas Linear Search is used when data isn't sorted or requires simple checks .

C++ is often considered the best language for competitive programming due to its balance of efficiency and features. It offers low-level memory manipulation capabilities for optimization, rich Standard Library supporting containers and algorithms, and it operates with high performance allowing competitive programmers to solve complex problems within tight constraints. Additionally, the language has features like templates which make generic programming easier and more powerful .

The Sieve of Eratosthenes is an efficient algorithm to generate all prime numbers up to a given limit. It improves computational mathematics by simplifying prime detection in large datasets, a common requirement in competitive programming challenges involving factorization, prime calculations, and cryptography. Its efficiency in terms of time complexity (O(n log log n)) makes it suitable for handling large inputs swiftly .

Coordinate compression aids in reducing the range of coordinates in large datasets by mapping large values to a smaller range without losing the order. This is particularly effective in computational geometry where such transformations allow efficient use of data structures like Fenwick Trees, making feasible the quick resolution of problems such as range queries within large coordinate constraints .

DFS is preferable over BFS in scenarios where memory usage and recursive solutions are prioritized, such as traversing deep trees or solving puzzle games where exploring a path fully before backtracking is beneficial. DFS uses less memory in dense search spaces by not storing all nodes at a given depth, unlike BFS which can become space-intensive due to storing an entire level .

Backtracking distinguishes itself by incrementally building candidates for the solution and removing candidates that fail to satisfy the constraints at any point. This approach is particularly useful for constraint satisfaction problems (CSPs) such as the N-Queens problem, as it efficiently prunes the search space, eliminating suboptimal paths and ensuring all constraints are met before deciding a solution path .

Dynamic Programming optimizes simple recursive methods by storing intermediate results to avoid redundant calculations, effectively turning exponential time complexity into polynomial. This is particularly useful in problems characterized by overlapping subproblems and optimal substructure, such as the Longest Common Subsequence, where a DP approach systematically reduces recomputation compared to plain recursion .

Algorithmic complexity analysis allows competitive programmers to estimate the performance limits of solutions in real-time constraints. Understanding time and space trade-offs is crucial for optimizing solutions to meet stringent limits of competitive platforms where computational resources are limited. This ensures that solutions are feasible to run within given input size restrictions, crucial for success in competitions .

Understanding recursion enables programmers to break down complex problems into simpler, self-similar problems that can be solved iteratively. It fosters the development of natural and efficient algorithm designs for recursive problem spaces like tree traversals, backtracking problems, and certain dynamic programming challenges where stack utilization is intrinsic to reflecting problem solutions .

You might also like