3.8 KiB
3.8 KiB
Stuff
https://github.com/bqi343/USACO/blob/master/Contests/USACO%20Links/USACO%20Topics.md
https://www.vplanetcoding.com/courses
https://people.ksp.sk/~misof/ioi-syllabus/ioi-syllabus.pdf
https://www.overleaf.com/project/5e73f65cde1d010001224d8a
https://github.com/bqi343/USACO/blob/master/Contests/USACO%20Links/Division-Specific/Silver.md
Italics = mostly appears in higher divisions but still good to learn
Bronze
- Assumed Prerequisites
- for loops, ifs, etc…
- first half of AP Computer Science A
- What is competitive programming?
- how to practice, debug
- good practices for contests
- contest format
- Introduction to contests
- format
- plenty of examples involving files I/O
- submitting, verdicts
- VERY easy problems
- ex. Fence Painting
- At this level... be explicit about how to implement things (say "arrays" or "for-loops" probably)
- Brute force
- ex. Tracing
- Greedy
- ex. Mad Scientist
- Bitwise operations?
- Iterating through subsets and permutations
- next_permutation/Generating permutations recursively (for Java/python)
- STL / java.util. (know that they exist)
- Vector / ArrayList
- std::sort / Collections.sort
- std::map / TreeMap/HashMap
Silver
- Sorting
- ex. Coord Compress
- Binary Search (BinSearch)
- Two Pointers (2P)
- Prefix Sums (Psum)
- aka Cumulative, Partial
- 2D
- Containers from C++ standard template library (STL)
- (also know pairs in C++)
- PQ = priority queue
- Data Structures and their Methods(STL)
- BST/TreeSet / TreeMap (Python doesn’t have ordered map)
- Linked List
- Priority Queues
- Stacks
- Deques
- Sets/Maps
- HashSets/HashMaps
- Multiset (F FOR JAVA) (just teach a workaround or smthn ig) TreeMap<value,numoccrances> (erase by value pitfall**)
- Custom comparator (prerequisite for basically all silver topics in Java)
- Graphs
- Terminology
- ex. Bipartite graphs
- FF: Flood Fill (finding the number of connected components in a graph)
- frequently on grid
- Depth First Search (DFS)
- Breadth First Search (BFS)
- Disjoint Set Union (DSU)
- Terminology
- Permutations / Cycle Detection??
Gold
- Dynamic Programming (DP)
- Tree
- Bitmasks
- Knapsack
- Range DP??
- Graphs
- Shortest Path (SP)
- Dijkstra
- Bellman-Ford (SPFA?)
- Floyd-Warshall (Separate or together?)
- Minimum Spanning Tree (MST)
- Prim
- Kruskal
- Topological Sort (TopoSort)
- Lowest Common Ancestor (LCA)
- hasn’t been required aside from cowland
- well, milk visits mentions it (but no binary jumping required…)
- Shortest Path (SP)
- 1D Range Queries (1DRQ)
- Mostly sum queries
- Fenwick / Binary Indexed Tree (BIT)
- Segment Tree
- Math
- Combinatorics
- Principle of Inclusion and Exclusion (PIE)
- Number Theory
- Modular Arithmetic
- Fast Exponentiation (Cow Poetry)
- Combinatorics
- Geometry
- Cross product, dot product, geometry primitives (shoelace, etc.)
- Sweepline
- Bitset??
Written with StackEdit.