Competitive/Collaborative Programming Class

ICPC Computer Programming Contest Prep

Problem Solving in Computer Science

Spring 2023 -- CSC 2700 Section 01 (1216 Patrick Taylor, 6:30 PM - 8:20 PM)

Problem Categories

Programming Contest problems come in many shapes and sizes. One step that can help in successfully solving a problem is to determine the nature of that problem. One of the easiest ways for people to do this is to make up a list of categories and then decide which category(s) the problem fits into. So here is a first cut in making a list of categories.

Problem Categories
Category Subcategory Distinguishing Features
Packing Problems Fitting some shaped item into another shaped item
2-D Can 2-D object X fit in/pass through 2-D object Y
3-D Perspective What is visible, are two items the same
Rotation/Transformation What happens when a series of rotations/transformations are applied to an object
Lines Intersection of lines
Curves Circles, Ellipses, Cones, ...
Triangles Circumference, area, Right, Isosceles, Equilateral, Scalene, Non-Euclidean
Quadrilaterals Square, rectangle, parallelogram, rhombus, trapezoid
Polygons Working with many sided figures
Combinations/Permutations Solve some puzzle that requires calculation/production of a combination/permutation of items
Simultaneous Equations Solve a situation with N unknowns (inequalities also)
Algebraic Problems that require use of algebra to solve
Number Theory Problems that require knowledge of number theory to solve
Trig Relations Problems that require trig relationships to solve
Numerical Relationship Primes, Pascal's triangle, Fibonacci Series, Factorial
Trig Relations Problems that require trig relationships to solve
String Containment Is some string(s) contained in another string(s)/matrix
String Manipulation Heavy string coding: reversing strings, substringing, ...
Parsing Problems that rely on parsing input data
Sorting/Searching Problems that need data sorted or searched
Data Structures Problems that require understanding of specific data structures to solve
Backtracking Problems that require you to be able to backtrack to solve
Network Minimum/maximum distance...
Graph Problems Problems that require you to be able to traverse and translate graphs to solve
Grids XY grids
Flood Fill Filling a bounded region
Recursive Recursion -- cool
Greedy Algorithms Solve problem by taking best option at each possible step
Brute Force Just code away
Inventory Classic start with a list, add/remove/modify list, display list of state whether operations are possible
Dynamic Programming Can you think sideways...

Examples of problems that fit into categories. I have solved the problems with an asterrisk (*) and an exclamation point (!) means not solved by me.

Problem Categories
Category Sub-Category Problems
Math Miscellaneous
Big Integer
Clock Aritmetic
Divisibility Related
Number Theory
Prime Related
Dynamic Programming Miscellaneous
Longest Increasing Subsequence
Longest Common Subsequence
Flood Fill
Computational Geometry Miscellaneous
Graph Miscellaneous
Shortest Path

Problem categories

UVA Problem Categories