[CSES] Introduction
Hello!
Above all, before introducing what it is, I have a word for it.
This is the first seed sowed on my garden. And like any farmers, observasing its growth and flourish is my delight.
In addition, I one hundred percent belive that these plants not only bear fruit for me but also bring huge benefits
to you.
The CSES Problem Set is a collection of algorithmic programming problems. The goal of the project is to create a
comprehensive high quality problem set for learning algorithmic programming.
The current collection has 300 problems, and new problems will be gradually added.
After finishing Grokking
the Coding Interview: Patterns for Coding Questions,
CSES is final exam for evaluating my algorithmic learning. And I made this series to keep track of the process as
well as facilitate future reference.
CSES set includes 11 categories and over 300 problems at this point of writing. It's long way to the top, but the
view is worth it xD.
Table of Contents
Introductory Problems
Weird Algorithm Missing Number Repetitions Increasing Array Permutations Number Spiral Two Knights Two Sets Bit Strings Trailing Zeros Coin Piles Palindrome Reorder Gray Code Tower of Hanoi Creating Strings Apple Division Chessboard and Queens Digit Queries Grid Paths
Sorting and Searching
Distinct Numbers Apartments Ferris Wheel Concert Tickets Restaurant Customers Movie Festival Sum of Two Values Maximum Subarray Sum Stick Lengths Missing Coin Sum Collecting Numbers Collecting Numbers II Playlist Towers Traffic Lights Josephus Problem I Josephus Problem II Nested Ranges Check Nested Ranges Count Room Allocation Factory Machines Tasks and Deadlines Reading Books Sum of Three Values Sum of Four Values Nearest Smaller Values Subarray Sums I Subarray Sums II Subarray Divisibility Subarray Distinct Values Array Division Sliding Median Sliding Cost Movie Festival II Maximum Subarray Sum II
Dynamic Programming
Dice Combinations Minimizing Coins Coin Combinations I Coin Combinations II Removing Digits Grid Paths Book Shop Array Description Counting Towers Edit Distance Rectangle Cutting Money Sums Removal Game Two Sets II Increasing Subsequence Projects Elevator Rides Counting Tilings Counting Numbers
Graph Algorithms
Counting Rooms Labyrinth Building Roads Message Route Building Teams Round Trip Monsters Shortest Routes I Shortest Routes II High Score Flight Discount Cycle Finding Flight Routes Round Trip II Course Schedule Longest Flight Route Game Routes Investigation Planets Queries I Planets Queries II Planets Cycles Road Reparation Road Construction Flight Routes Check Planets and Kingdoms Giant Pizza Coin Collector Mail Delivery De Bruijn Sequence Teleporters Path Hamiltonian Flights Knight's Tour Download Speed Police Chase School Dance Distinct Routes
Range Queries
Static Range Sum Queries Static Range Minimum Queries Dynamic Range Sum Queries Dynamic Range Minimum Queries Range Xor Queries Range Update Queries Forest Queries Hotel Queries List Removals Salary Queries Prefix Sum Queries Pizzeria Queries Subarray Sum Queries Distinct Values Queries Increasing Array Queries Forest Queries II Range Updates and Sums Polynomial Queries Range Queries and Copies
Tree Algorithms
Subordinates Tree Matching Tree Diameter Tree Distances I Tree Distances II Company Queries I Company Queries II Distance Queries Counting Paths Subtree Queries Path Queries Path Queries II Distinct Colors Finding a Centroid Fixed-Length Paths I Fixed-Length Paths II
Mathematics
Josephus Queries Exponentiation Exponentiation II Counting Divisors Common Divisors Sum of Divisors Divisor Analysis Prime Multiples Counting Coprime Pairs Binomial Coefficients Creating Strings II Distributing Apples Christmas Party Bracket Sequences I Bracket Sequences II Counting Necklaces Counting Grids Fibonacci Numbers Throwing Dice Graph Paths I Graph Paths II Dice Probability Moving Robots Candy Lottery Inversion Probability Stick Game Nim Game I Nim Game II Stair Game Grundy's Game Another Game
String Algorithms
Word Combinations String Matching Finding Borders Finding Periods Minimal Rotation Longest Palindrome Required Substring Palindrome Queries Finding Patterns Counting Patterns Pattern Positions Distinct Substrings Repeating Substring String Functions Substring Order I Substring Order II Substring Distribution
Geometry
Point Location Test Line Segment Intersection Polygon Area Point in Polygon Polygon Lattice Points Minimum Euclidean Distance Convex Hull
Advanced Techniques
Meet in the Middle Hamming Distance Beautiful Subgrids Reachable Nodes Reachability Queries Cut and Paste Substring Reversals Reversals and Sums Necessary Roads Necessary Cities Eulerian Subgraphs Monster Game I Monster Game II Subarray Squares Houses and Schools Knuth Division Apples and Bananas One Bit Positions Signal Processing New Roads Queries Dynamic Connectivity Parcel Delivery Task Assignment Distinct Routes II
Additional Problems
Shortest Subsequence Counting Bits Swap Game Prüfer Code Acyclic Graph Edges Strongly Connected Edges Even Outdegree Edges Multiplication Table Advertisement Special Substrings Permutation Inversions Maximum Xor Subarray Movie Festival Queries Chess Tournament Tree Traversals Network Renovation Graph Girth Intersection Points Inverse Inversions Monotone Subsequences String Reorder Stack Weights Pyramid Array Increasing Subsequence II String Removals Bit Inversions Xor Pyramid Writing Numbers String Transform Letter Pair Move Game Maximum Building I Sorting Methods Cyclic Array List of Sums Increasing Array II Food Division Bit Problem Swap Round Sorting Binary Subsequences Tree Isomorphism I Counting Sequences Critical Cities School Excursion Coin Grid Robot Path Programmers and Artists Course Schedule II Removing Digits II Coin Arrangement Counting Bishops