- Python solutions of Google Code Jam 2021. Solution begins with
* means it will get TLE in the largest data set.
- Total computation amount >
10^8 is not friendly for Python to solve in 5 ~ 15 seconds.
- A problem was marked as
Very Hard means that it was an unsolved one during the contest and may not be that difficult.
- From 2021-04,
PyPy3 is supported by the online judge.
- From 2021-11,
Python2/PyPy2 is no longer supported by the online judge.
- You need to run
2to3 -n -W --add-suffix=3 solution.py to convert the solution into Python3/PyPy3.
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|
| A | Append Sort | Python Python | O(N * log(MAX_X)) | O(1) | Easy | | Greedy |
| B | Prime Time | Python | O((MAX_P * logX) * (M + logX)) | O(1) | Medium | | Math, Prime Factorization, Pruning |
| C | Hacked Exam | Python | precompute: O(MAX_Q^2) runtime: O(Q) | O(MAX_Q^2) | Hard | | Binomial Coefficients, DP, Math, Expected Value |
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|
| A | Build-A-Pair | PyPy PyPy Python | O(N) | O(1) | Easy | | Enumeration, Greedy |
| B | Square Free | Python | O(R^2 * C^2) | O(R + C) | Medium | | Max Flow, Greedy |
| C | Fence Design | PyPy | O(NlogN) on average | O(N) | Hard | ❤️ | Geometry, Convex Hull, Divide and Conquer, Random |
| D | Binary Search Game | PyPy PyPy Python | O(2^(2^(L-1)) * (2^L + N^2) + N^3) | O(N^2 + L) | Hard | ❤️ | Combinatorics, Counting, DP, Greedy, Polynomial, Faulhaber's Formula, Lagrange Interpolation |
You can relive the magic of the 2021 Code Jam Virtual World Finals by watching the Live Stream Recording of the competition, problem explanations, and announcement of winners.
| # | Title | Solution | Time | Space | Difficulty | Tag | Note |
|---|
| A | Cutting Cake | Python | O(NlogN) | O(N) | Medium | | Math, Line Sweep |
| B | Slide Circuits | Python Python Python | O(B + N + SlogS) | O(SlogS) | Medium | | Graph, Hash, Prefix Sum |
| C | Ropes | PyPy | O(N^3) | O(N^2) | Hard | ❤️ | Greedy |
| D | Divisible Divisions | Python Python | O(|S|logD) | O(min(|S|logD, D)) | Medium | | Math, Linear Congruence, Chinese Remainder Theorem, DP, Prefix Sum |
| E | Infinitree | PyPy PyPy3 | O(N^3.5 * logN + N^3 * logB) | O(N^2.5 * logN + N^2 * logB) | Very Hard | ❤️ | Graph, Binary Tree, Matrix Exponentiation, Matrix Power Series, Prefix Sum, Binary Search, LCA, Tarjan's Algorithm |