# Stuff [https://github.com/bqi343/USACO/blob/master/Contests/USACO%20Links/USACO%20Topics.md](https://github.com/bqi343/USACO/blob/master/Contests/USACO%20Links/USACO%20Topics.md) [https://www.vplanetcoding.com/courses](https://www.vplanetcoding.com/courses) [https://people.ksp.sk/~misof/ioi-syllabus/ioi-syllabus.pdf](https://people.ksp.sk/~misof/ioi-syllabus/ioi-syllabus.pdf) [https://www.overleaf.com/project/5e73f65cde1d010001224d8a](https://www.overleaf.com/project/5e73f65cde1d010001224d8a) [https://github.com/bqi343/USACO/blob/master/Contests/USACO%20Links/Division-Specific/Silver.md](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]([http://usaco.org/index.php?page=viewproblem2&cpid=567](http://usaco.org/index.php?page=viewproblem2&cpid=567)) - At this level... be explicit about how to implement things (say "arrays" or "for-loops" probably) - Brute force - ex. [Tracing](http://usaco.org/index.php?page=viewproblem2&cpid=1037) - Greedy - ex. [Mad Scientist](http://usaco.org/index.php?page=viewproblem2&cpid=1012) - 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 (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)* - 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](http://www.usaco.org/index.php?page=viewproblem2&cpid=921) - well, [milk visits](http://www.usaco.org/index.php?page=viewproblem2&cpid=970) mentions it (but no binary jumping required…) - 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) - Geometry - Cross product, dot product, geometry primitives (shoelace, etc.) - Sweepline - Bitset?? > Written with [StackEdit](https://stackedit.io/).