From 31d06ee4f5555a9554c602ef3fea3e692d91bb99 Mon Sep 17 00:00:00 2001 From: Benjamin Qi Date: Mon, 8 Jun 2020 15:51:58 -0400 Subject: [PATCH] + General --- content/0_Intro/1_Intro.md | 172 ++--------------- content/0_Intro/1_Intro_WhyCpp.md | 173 ++++++++++++++++++ content/0_Intro/2_Intro_Prerequisites.md | 36 ++-- content/0_Intro/2_Intro_RunningCpp.md | 36 ++++ content/0_Intro/RunningCpp.md | 128 +++++++++++++ content/1_General/Contests.md | 105 +++++++++++ content/1_General/Debugging.md | 7 + .../Editorials.md} | 0 content/1_General/Olympiads.md | 59 ++++++ content/1_General/Practicing.md | 0 .../Resources.md} | 15 +- content/1_General/Strategy.md | 0 content/2_Silver/1_Silver_Greedy.md | 14 +- content/2_Silver/4_Silver_BinSearch.md | 22 ++- content/2_Silver/5_Silver_2P.md | 12 +- content/3_Gold/2_Gold_BFS.md | 3 +- content/3_Gold/3_Gold_TopoSort.md | 5 +- content/3_Gold/4_Gold_SP.md | 10 +- content/3_Gold/5_Gold_MST.md | 6 +- content/3_Gold/6_Gold_BIT.md | 2 +- content/3_Gold/7_Gold_NT.md | 25 ++- content/4_Plat/4_Plat_Geo.md | 95 +++++----- content/4_Plat/5_Plat_Graphs.md | 1 - content/4_Plat/7_Plat_Bitset.md | 4 +- content/4_Plat/8_Plat_Fracture.md | 3 +- content/4_Plat/9_Plat_Slope.md | 7 +- 26 files changed, 667 insertions(+), 273 deletions(-) create mode 100644 content/0_Intro/1_Intro_WhyCpp.md create mode 100644 content/0_Intro/2_Intro_RunningCpp.md create mode 100644 content/0_Intro/RunningCpp.md create mode 100644 content/1_General/Contests.md create mode 100644 content/1_General/Debugging.md rename content/{0_Intro/4_Intro_ReadingEditorials.md => 1_General/Editorials.md} (100%) create mode 100644 content/1_General/Olympiads.md create mode 100644 content/1_General/Practicing.md rename content/{0_Intro/5_Intro_Resources.md => 1_General/Resources.md} (88%) create mode 100644 content/1_General/Strategy.md diff --git a/content/0_Intro/1_Intro.md b/content/0_Intro/1_Intro.md index e12ef71..a4e0305 100644 --- a/content/0_Intro/1_Intro.md +++ b/content/0_Intro/1_Intro.md @@ -9,8 +9,6 @@ order: 1 @@ -19,6 +17,12 @@ Todo: - Video clip from Brian Dean - Explains what USACO is all about & how it works +## Introduction + +In competitive programming contests, one must solve well-defined problems by writing computer programs under specified constraints ([Wikipedia](https://en.wikipedia.org/wiki/Competitive_programming)). Typically, the most popular language is C++, followed by Java and Python. + +[William Lin video!!](https://www.youtube.com/watch?time_continue=1&v=ueNT-w7Oluw) + ## Choosing a Language If you're in Bronze, **Don't worry about the language!** If you already know a language, just use it. You can always switch languages down the road. @@ -34,163 +38,9 @@ Note: A majority of high level contestants use C++ and Java. Between those, C++ Keep in mind that it's easy to switch languages down the road! Don't get caught up on which language to choose. Just pick the one you feel most comfortable with! -## Why C++? +## Language References (provided at IOI) -Although both Python and Java receive two times the C++ time limit in USACO, this is not the case for other websites (ex. CodeForces). Even with the extended time limits, Python and Java sometimes have trouble passing time limits. - - - Rewriting the C++ solution for [Wormsort](http://www.usaco.org/index.php?page=viewproblem2&cpid=992) in Python gets TLE on 2/10 cases. - -
- - Python3 8/10 - - ```py - # 8/10 test cases ... - - fin = open("wormsort.in","r") - lines = [line for line in fin] - N,M = map(int,lines[0].split()) - p = list(map(lambda x: int(x)-1,lines[1].split())) - - ed = [] - for i in range(2,len(lines)): - a,b,w = map(int,lines[i].split()) - a -= 1 - b -= 1 - ed.append([w,a,b]) - ed.sort() - ed.reverse() - - adj = [[] for i in range(N)] - vis = [0 for i in range(N)] - cnt = 0 - - def dfs(x): - global cnt - if vis[x] != 0: - return - vis[x] = cnt - for i in adj[x]: - dfs(i) - - def ok(mid): - global cnt - for i in range(N): - vis[i] = 0 - adj[i].clear() - for i in range(mid): - a,b = ed[i][1],ed[i][2] - adj[a].append(b) - adj[b].append(a) - for i in range(N): - if vis[i] == 0: - cnt += 1 - todo = [i] - ind = 0 - while ind < len(todo): - x = todo[ind] - ind += 1 - vis[x] = cnt - for i in adj[x]: - if vis[i] == 0: - vis[i] = -cnt - todo.append(i) - ok = True - for i in range(N): - if vis[i] != vis[p[i]]: - ok = False - return ok - - lo,hi = 0,M - while lo < hi: - mid = (lo+hi)//2 - if ok(mid): - hi = mid - else: - lo = mid+1 - - fout = open("wormsort.out","w") - - fout.write(str(-1 if lo == 0 else ed[lo-1][0])) - fout.write('\n') - ``` - -
- - - A similar solution in Java requires almost 3s, which is fairly close to the time limit of 4s. - -
- - Java - - ```java - import java.io.*; // from Nick Wu - import java.util.*; - public class wormsort { - public static void main(String[] args) throws IOException{ - BufferedReader br = new BufferedReader(new FileReader("wormsort.in")); - StringTokenizer st = new StringTokenizer(br.readLine()); - int n = Integer.parseInt(st.nextToken()); - int m = Integer.parseInt(st.nextToken()); - loc = new int[n]; - component = new int[n]; - edges = new LinkedList[n]; - for(int i = 0; i < n; i++) edges[i] = new LinkedList<>(); - lhs = new int[m]; - rhs = new int[m]; - weight = new int[m]; - st = new StringTokenizer(br.readLine()); - for(int i = 0; i < n; i++) loc[i] = Integer.parseInt(st.nextToken())-1; - for(int i = 0; i < m; i++) { - st = new StringTokenizer(br.readLine()); - lhs[i] = Integer.parseInt(st.nextToken())-1; - rhs[i] = Integer.parseInt(st.nextToken())-1; - weight[i] = Integer.parseInt(st.nextToken()); - } - br.close(); - int minW = 0; - int maxW = 1000000001; - while(minW != maxW) { - int mid = (minW + maxW + 1) / 2; - if(valid(mid)) minW = mid; - else maxW = mid-1; - } - if(minW > 1e9) minW = -1; - PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("wormsort.out"))); - pw.println(minW); - pw.close(); - } - static int[] loc, lhs, rhs, weight; - static LinkedList[] edges; - static int[] component; - private static void dfs(int curr, int label) { - if(component[curr] == label) return; - component[curr] = label; - for(int child: edges[curr]) dfs(child, label); - } - private static boolean valid(int minW) { - Arrays.fill(component, -1); - for(int i = 0; i < edges.length; i++) edges[i].clear(); - for(int i = 0; i < lhs.length; i++) { - if(weight[i] >= minW) { - edges[lhs[i]].add(rhs[i]); - edges[rhs[i]].add(lhs[i]); - } - } - int numcomps = 0; - for(int i = 0; i < component.length; i++) { - if(component[i] < 0) { - dfs(i, numcomps++); - } - } - for(int i = 0; i < loc.length; i++) { - if(component[i] != component[loc[i]]) return false; - } - return true; - } - } - ``` - -
- -Also, Java lacks features such as `#define`, `typedef`, and `auto` that are present in C++ (which some contestants use extensively). \ No newline at end of file + - [C++](https://en.cppreference.com/w/) + - [Additional C++ reference (not provided at IOI)](http://www.cplusplus.com/) + - [Java](https://docs.oracle.com/javase/8/docs/api/overview-summary.html) + - [Python3](https://docs.python.org/3/reference/) \ No newline at end of file diff --git a/content/0_Intro/1_Intro_WhyCpp.md b/content/0_Intro/1_Intro_WhyCpp.md new file mode 100644 index 0000000..766dcaf --- /dev/null +++ b/content/0_Intro/1_Intro_WhyCpp.md @@ -0,0 +1,173 @@ +--- +slug: /intro/why-cpp +title: Why C++? +author: Benjamin Qi +order: 1 +--- + +A few reasons why choice of language matters significantly outside of bronze. + +## Time Limit + +Although both Python and Java receive two times the C++ time limit in USACO, this is not the case for most other websites (ex. CodeForces). Even with the extended time limits, Python and Java sometimes have trouble passing. + + - Rewriting the C++ solution for [USACO Silver Wormsort](http://www.usaco.org/index.php?page=viewproblem2&cpid=992) in Python receives TLE (Time Limit Exceeded) on 2/10 cases. + +
+ + Python3 8/10 Solution + + ```py + # 8/10 test cases ... + + fin = open("wormsort.in","r") + lines = [line for line in fin] + N,M = map(int,lines[0].split()) + p = list(map(lambda x: int(x)-1,lines[1].split())) + + ed = [] + for i in range(2,len(lines)): + a,b,w = map(int,lines[i].split()) + a -= 1 + b -= 1 + ed.append([w,a,b]) + ed.sort() + ed.reverse() + + adj = [[] for i in range(N)] + vis = [0 for i in range(N)] + cnt = 0 + + def dfs(x): + global cnt + if vis[x] != 0: + return + vis[x] = cnt + for i in adj[x]: + dfs(i) + + def ok(mid): + global cnt + for i in range(N): + vis[i] = 0 + adj[i].clear() + for i in range(mid): + a,b = ed[i][1],ed[i][2] + adj[a].append(b) + adj[b].append(a) + for i in range(N): + if vis[i] == 0: + cnt += 1 + todo = [i] + ind = 0 + while ind < len(todo): + x = todo[ind] + ind += 1 + vis[x] = cnt + for i in adj[x]: + if vis[i] == 0: + vis[i] = -cnt + todo.append(i) + ok = True + for i in range(N): + if vis[i] != vis[p[i]]: + ok = False + return ok + + lo,hi = 0,M + while lo < hi: + mid = (lo+hi)//2 + if ok(mid): + hi = mid + else: + lo = mid+1 + + fout = open("wormsort.out","w") + + fout.write(str(-1 if lo == 0 else ed[lo-1][0])) + fout.write('\n') + ``` + +
+ + - A similar solution in Java requires almost 3s, which is fairly close to the time limit of 4s. + +
+ + Java Solution + + ```java + import java.io.*; // from Nick Wu + import java.util.*; + public class wormsort { + public static void main(String[] args) throws IOException{ + BufferedReader br = new BufferedReader(new FileReader("wormsort.in")); + StringTokenizer st = new StringTokenizer(br.readLine()); + int n = Integer.parseInt(st.nextToken()); + int m = Integer.parseInt(st.nextToken()); + loc = new int[n]; + component = new int[n]; + edges = new LinkedList[n]; + for(int i = 0; i < n; i++) edges[i] = new LinkedList<>(); + lhs = new int[m]; + rhs = new int[m]; + weight = new int[m]; + st = new StringTokenizer(br.readLine()); + for(int i = 0; i < n; i++) loc[i] = Integer.parseInt(st.nextToken())-1; + for(int i = 0; i < m; i++) { + st = new StringTokenizer(br.readLine()); + lhs[i] = Integer.parseInt(st.nextToken())-1; + rhs[i] = Integer.parseInt(st.nextToken())-1; + weight[i] = Integer.parseInt(st.nextToken()); + } + br.close(); + int minW = 0; + int maxW = 1000000001; + while(minW != maxW) { + int mid = (minW + maxW + 1) / 2; + if(valid(mid)) minW = mid; + else maxW = mid-1; + } + if(minW > 1e9) minW = -1; + PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("wormsort.out"))); + pw.println(minW); + pw.close(); + } + static int[] loc, lhs, rhs, weight; + static LinkedList[] edges; + static int[] component; + private static void dfs(int curr, int label) { + if(component[curr] == label) return; + component[curr] = label; + for(int child: edges[curr]) dfs(child, label); + } + private static boolean valid(int minW) { + Arrays.fill(component, -1); + for(int i = 0; i < edges.length; i++) edges[i].clear(); + for(int i = 0; i < lhs.length; i++) { + if(weight[i] >= minW) { + edges[lhs[i]].add(rhs[i]); + edges[rhs[i]].add(lhs[i]); + } + } + int numcomps = 0; + for(int i = 0; i < component.length; i++) { + if(component[i] < 0) { + dfs(i, numcomps++); + } + } + for(int i = 0; i < loc.length; i++) { + if(component[i] != component[loc[i]]) return false; + } + return true; + } + } + ``` + +
+ +## Other + + - Python lacks a data structure that keeps its keys in sorted order (the equivalent of `set` in C++), which is required for some silver problems. + - Java lacks features such as `#define`, `typedef`, and `auto` that are present in C++ (which some contestants rely on extensively). + - Problemsetters don't always test Java solutions (and rarely Python) when setting the constraints. \ No newline at end of file diff --git a/content/0_Intro/2_Intro_Prerequisites.md b/content/0_Intro/2_Intro_Prerequisites.md index c6c8cdb..cdbcc9f 100644 --- a/content/0_Intro/2_Intro_Prerequisites.md +++ b/content/0_Intro/2_Intro_Prerequisites.md @@ -11,6 +11,8 @@ Here's what you should learn before reading these resources. These resources do not teach you how to code. We recommend you learn roughly the first half of AP Computer Science A before continuing. If you do not meet these prerequisites, you can go to the resources below to get started. +Familiarity with contest math (ex. AIME qualification) is helpful but not required. + Expected Knowledge: - Variables @@ -25,34 +27,22 @@ Expected Knowledge: - Arrays - Multidimensional Arrays -## Resources for Learning to Code +## Introductory Resources + +### Learning to Code [Sololearn](https://www.sololearn.com/) has courses on C++, Java, and Python. You don't have to complete the full course. -- For C++, we recommend you finish Sololearn up to (but not including) "More on Classes." - -## Using C++ + - For C++, we recommend you finish Sololearn up to (but not including) "More on Classes." [[info | Pro Tip]] | You do not need to learn pointers (for now). Knowledge of structs and classes is useful but not required. -
+### Getting Started -Here's a basic C++ template you may find useful: - -```cpp -#include - -using namespace std; - -int main() { - // these two lines open the file into the standard input/output, - // so you can just use cin/cout. - freopen("file.in", "r", stdin); - freopen("file.out", "w", stdout); - - // Code goes here!! - - return 0; -} -``` \ No newline at end of file + - [CodeSignal](https://codesignal.com/) + - good place to practice basics + - [IOI: Getting Started](https://ioinformatics.org/page/getting-started/14) + - [Philippines OI: Prepare](https://noi.ph/prepare/) + - [Schedule for Beginners](https://www.quora.com/What-is-a-good-schedule-to-follow-for-becoming-better-at-competitive-programming-for-beginners) + - [E869120 Tutorial](http://codeforces.com/blog/entry/53341) \ No newline at end of file diff --git a/content/0_Intro/2_Intro_RunningCpp.md b/content/0_Intro/2_Intro_RunningCpp.md new file mode 100644 index 0000000..495057b --- /dev/null +++ b/content/0_Intro/2_Intro_RunningCpp.md @@ -0,0 +1,36 @@ +--- +slug: /intro/running-cpp +title: Running C++ +author: Nathan Wang, Benjamin Qi +order: 2 +--- + +How to run C++ locally. + + + +## Running C++ Locally + +(todo) + +## Using C++ + +
+ +Here's a basic C++ template you may find useful: + +```cpp +#include + +using namespace std; + +int main() { + // these two lines open the file into the standard input/output, + // so you can just use cin/cout. + freopen("file.in", "r", stdin); // read from file.in + freopen("file.out", "w", stdout); // write to file.out + + // Code goes here!! + +} +``` \ No newline at end of file diff --git a/content/0_Intro/RunningCpp.md b/content/0_Intro/RunningCpp.md new file mode 100644 index 0000000..9144c3b --- /dev/null +++ b/content/0_Intro/RunningCpp.md @@ -0,0 +1,128 @@ +# C++ + +## Command Line (Mac) + +### Option 1 + +``` +brew install gcc +``` +According to [this](https://stackoverflow.com/questions/30998890/installing-opencv-with-brew-never-finishes) if brew doesn't seem to finish for a long time then +``` +brew install gcc --force-bottle +``` +probably suffices. + +### Option 2 (Old)) + +Follow the instructions [here](https://wiki.helsinki.fi/display/HUGG/GNU+compiler+install+on+Mac+OS+X?fbclid=IwAR3bnM6A_kTgXD2p5nOfVbxRRQ4nHMj89jllNy1-zdtfXfcq1czbSoXiWgE). Step 4 will give errors but it should still install. + +### Confirmation + +You should be able to compile with g++ or maybe g++-#, where # is the version number (currently 9). Running the following command: +``` +g++-9 --version +``` +should display something like this: +``` +g++-9 (Homebrew GCC 9.2.0_2) 9.2.0 +Copyright (C) 2019 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +## Shortcuts + +Open your bash profile with a text editor such as gedit (or sublime text). +``` +brew install gedit +gedit ~/.zshenv +``` +You can add aliases and functions here, such as the following: +``` +alias clr="clear" +alias ZES='source ~/.zshenv' +alias ZEO='subl ~/.zshenv' +alias IMPL='cd ~/Documents/GitHub/USACO/Implementations/' +co() { + g++-9 -std=c++11 -O2 -Wl,-stack_size -Wl,0x10000000 -Wall -Wextra -o $1 $1.cpp +} +run() { + co $1 && ./$1 +} +``` +Now you can easily run C++ from the command line by calling run. +``` +run [prog name] +``` + +## Troubleshooting + +Make sure you have installed XCode command line tools. +``` +xcode-select --install # make sure x-code command line tools are installed +softwareupdate --list +softwareupdate -i -a # installs everything +``` + +### OS X Mojave + +Navigate to your bash profile +``` +gedit ~/.bash_profile +``` +and add the following line: +``` +export CPLUS_INCLUDE_PATH="/usr/local/include/c++/8.1.0/:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include:$CPLUS_INCLUDE_PATH" +``` + +### OS X Catalina + +Maybe the following links are helpful? + + * [StackOverflow](https://stackoverflow.com/questions/58278260/cant-compile-a-c-program-on-a-mac-after-upgrading-to-catalina-10-15) + * [SolarianProgrammer](https://solarianprogrammer.com/2019/10/12/compiling-gcc-macos/) + +~~Whoops I couldn't figure out how to use g++ successfully D:~~ Turns out that g++ was linked to g++-8 instead of g++-9, changing it now works. + +## Tools + +### Online + + * [CSAcademy](https://csacademy.com/workspace/) + * I used this a lot until the queue time limits got rlly annoying + * [Ideone](http://ideone.com/) + * seems okay if you use an ad blocker + * sometimes randomly erases your code when you first create it (so get in the habit of copying your code before creating it :P) + +### Local IDEs + + * [Geany](https://www.geany.org/) + * [Visual Studio Code](https://code.visualstudio.com/) + * [XCode](https://developer.apple.com/xcode/) + * mac + * [Codeblocks](http://www.codeblocks.org/) + * bad on mac :( + +### Text Editors + + * [Sublime Text 3](https://www.sublimetext.com/) + * [Editing Build Settings](https://stackoverflow.com/questions/23789410/how-to-edit-sublime-text-build-settings) + * [FastOlympicCoding Addon](https://github.com/Jatana/FastOlympicCoding) + * [Symlink](https://www.sublimetext.com/docs/3/osx_command_line.html) + * Using '/usr/local/bin/subl' instead of '~/bin/subl' worked for me on OS X Mojave. + * [Atom](https://atom.io/) + +## Useful Links + +### Reference + + * [cplusplus](http://www.cplusplus.com/reference/) + * [cppreference](http://en.cppreference.com/w/) + +### Other + + * [Intro to Command Line](http://blog.teamtreehouse.com/introduction-to-the-mac-os-x-command-line) + * [Command Line Shortcuts](https://jonsuh.com/blog/bash-command-line-shortcuts/) + * [Run Python Script](https://stackoverflow.com/questions/7855996/cant-run-python-py-files-from-terminal-on-mac) + * [Competitive C++ Style Guide](https://codeforces.com/blog/entry/64218) diff --git a/content/1_General/Contests.md b/content/1_General/Contests.md new file mode 100644 index 0000000..d1bb68e --- /dev/null +++ b/content/1_General/Contests.md @@ -0,0 +1,105 @@ +--- +slug: /intro/contests +title: Contests +author: Benjamin Qi +order: 5 +--- + +See [clist.by](https://clist.by/coder/bqi343/) for an extensive list. Most of the contests which I do are a subset of those shown in "Programming Contests.png". A link to my google calendar for contests is available [here.](https://calendar.google.com/calendar?cid=Y2s5ZjdmZDBkNjdmOGFxZ2oxbDVrMHJ1OGtAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ) See the other page for olympiads such as USACO. + +Make sure to [upsolve](https://en.wiktionary.org/wiki/upsolve) after the contest ends! I particularly enjoy problems from AtCoder and CSAcademy. :) + + * [AtCoder](https://beta.atcoder.jp/contests/archive) + * Contests + * Beginner / Regular: 4 problems, 100 min + * Grand: 6 problems, ~110 min + * [Visualizer](https://kenkoooo.com/atcoder/#/table/Benq) + * I've done nearly all of the AGC problems. + * [Codeforces](http://codeforces.com/problemset) + * Contests + * Div 2, Div 1: 5 problems, 2 hrs + * Archive + * problem quality, difficulty ratings are ok but not always great + * [Topcoder](https://www.topcoder.com/my-dashboard/) + * Div 2, Div 1 + * 75 min coding, 15 min challenge + * [Don Mills OJ](http://dmoj.ca/) + * [HackerEarth](http://hackerearth.com/) + * Monthly "Easy" + * [Kattis](https://open.kattis.com/) + * random ICPC stuff + * [Codechef](http://codechef.com/) + * Lunchtime, Cookoff + * [Google Kickstart](https://codingcompetitions.withgoogle.com/kickstart): Feb - Nov + +The following websites do not hold regular contests anymore, but they're still worth looking at. + + * [CS Academy](https://csacademy.com/contest/archive/) + * Contests + * Div 2: 5 problems, 2 hrs + * Open: 7 problems, 2 hrs + * no more? D: + * Archive + * short statements, editorials + * solve statistics + * ability to view best solutions + * I've done nearly all of the problems. + * [HackerRank](https://www.hackerrank.com/dashboard) + * HourRank: 3-4 problems, 1 hr + * 101 Hack: 5 problems, 2 hrs + +## Annual Contests + + * [Google Code Jam](https://code.google.com/codejam/): Apr + * 25 from R3 + * [Facebook Hacker Cup](https://www.facebook.com/hackercup/): Jun-Jul -> Oct + * 25 from R3 + * [Topcoder Open](https://tco19.topcoder.com/): Apr-Aug -> Nov + * 4 from SRMs + * 10 from R4 + * 2 from Wildcard + * [AtCoder World Tour Finals](https://codeforces.com/blog/entry/56623) + * 8 from AGC + * [Bubble Cup](http://bubblecup.org/): Apr + * [BattleCode](https://www.battlecode.org): Jan + +No Longer Active? + + * [IPSC](https://ipsc.ksp.sk/rules): July + * [Russian Code Cup](http://www.russiancodecup.ru/en/): March + * [Yandex Algorithm](https://contest.yandex.ru/contest-list/): April + * [SnackDown](https://www.codechef.com/snackdown): Sep-Dec -> Feb + * Global: 15 with travel expenses paid, 10 additional + +## US High School + + * [VT HSPC](https://icpc.cs.vt.edu/#/hscontest2017) + * Online + * 5 hours + * [Kattis](https://open.kattis.com/problem-sources/2016%20Virginia%20Tech%20High%20School%20Programming%20Contest) + * December + * [UCF HSPT](https://hspt.ucfprogrammingteam.org/index.php/hspt-online-edition) + * Online + * 4 hours + * December + * [Cornell HSPC](https://www.cs.cornell.edu/events/cornell-high-school-programming-contest) + * [2019](https://cornell-hspc19.kattis.com/problems) + +## Codeforces Tools + + * [Stopstalk](https://www.stopstalk.com) + * [Code Drills](http://code-drills.com/) + * [CF Visualizer](http://cfviz.netlify.com/compare.html) + * [CF Rating Predictor](https://chrome.google.com/webstore/detail/cf-predictor/ocfloejijfhhkkdmheodbaanephbnfhn) + * [CF Command Line](https://codeforces.com/blog/entry/66552) + * [CF Editor](https://codeforces.com/blog/entry/72952) + * [CF Enhancer](https://chrome.google.com/webstore/detail/codeforces-enhancer/ocmandagmgmkcplckgnfgaokpgkfenmp) + * no longer works + +## Contest Tools + + * [2D Geo Visualizer](https://codeforces.com/blog/entry/70330) + * [CSA Graph Editor (+ Geo Visualizer + Diff Tool)](https://csacademy.com/app/graph_editor/) + * [Desmos Grapher](https://www.desmos.com/calculator) + * [Wolfram Alpha](https://www.wolframalpha.com/) + * [OEIS](https://oeis.org/) diff --git a/content/1_General/Debugging.md b/content/1_General/Debugging.md new file mode 100644 index 0000000..39c6216 --- /dev/null +++ b/content/1_General/Debugging.md @@ -0,0 +1,7 @@ +(compilation flags) + +(printing) + + + * stress.sh: + * Source: [Errichto - testing sols](https://www.youtube.com/watch?v=JXTVOyQpSGM) \ No newline at end of file diff --git a/content/0_Intro/4_Intro_ReadingEditorials.md b/content/1_General/Editorials.md similarity index 100% rename from content/0_Intro/4_Intro_ReadingEditorials.md rename to content/1_General/Editorials.md diff --git a/content/1_General/Olympiads.md b/content/1_General/Olympiads.md new file mode 100644 index 0000000..24cfa62 --- /dev/null +++ b/content/1_General/Olympiads.md @@ -0,0 +1,59 @@ +# Olympiads + +> Hello, Which online judge should I practice more to do well in **IOI** ? +> the closest OJ for IOI style? +> Do you have any magic problems sets to suggest? + +## National + +See [here](https://ioinformatics.org/page/members/7) for additional links. The [OI Checklist](https://oichecklist.pythonanywhere.com/) is a great way to track your progress. :) + + * [USA](http://www.usaco.org/) + * Format + * Bronze, Silver, Gold, Platinum Divisions + * 3 problems, 4 hrs + * [Very Old Gold Probs](http://tjsct.wikidot.com/usaco/) + * [USACO Training](http://train.usaco.org/usacogate) + * not particularly beginner-friendly but still helpful + * somewhat outdated in the sense that it lacks topics which are now quite common (ex. segment tree) + * if you're unsure about whether it will be useful, you might as well try it and see where you get stuck :P + * personally, I did the first five chapters in one summer (though I had to look up some hints ...) + * [article :o](https://www.usenix.org/legacy/bodinfo/bod/bodmarch10/future.pdf) + * [Japan](https://www.ioi-jp.org/) + * [Open Contests](https://contests.ioi-jp.org/) + * see [oj.uz](https://oj.uz/problems/source/45) + * [Poland](https://szkopul.edu.pl/portal/) + * [Solutions (in Polish)](https://www.oi.edu.pl/l/40/) + * [Canada](https://cemc.math.uwaterloo.ca/contests/computing.html) + * [WCIPEG](https://wcipeg.com/problems/cat%3Dccc%2Cshow%3D50) + * [DMOJ](https://dmoj.ca/problems/?category=24) + * [Croatia](http://hsin.hr/coci/) + * not full feedback + * [Indonesia](https://competition.ia-toki.org/contests) + * monthly + * [Philippines](https://noi.ph/past-problems/) + * Other + * [China (WCIPEG)](https://wcipeg.com/problems/cat%3Dnoi%2Cshow%3D50) + * [Lithuania](http://online.lmio.lt/) + * [Australia](https://orac.amt.edu.au/) + * [Italy](https://training.olinfo.it/#/overview) + +## International + + * IOI + * Online Judges + * [Yandex](https://contest.yandex.com/ioi/) + * [WCIPEG](https://wcipeg.com/problems/cat%3Dioi%2Cshow%3D50) + * [DMOJ](https://dmoj.ca/problems/?category=5) + * [oj.uz](https://oj.uz/problems/source/22) + * Misc + * [List of 2017 IOI Participants](http://weaselcrow.com/pro/cf/ioi2017/) + * [IOI 2018 Syllabus](https://people.ksp.sk/~misof/ioi-syllabus/ioi-syllabus.pdf) + * [Baltic OI](http://www.boi2017.org/) + * [CEOI](http://ceoi.inf.elte.hu/) + * submit BOI / CEOI at [CSES](https://cses.fi/) + * [Balkan OI](http://boi2018.ro/home) + * [IZhO](https://oj.uz/problems/source/24) + * [APIO](http://apio-olympiad.org/) + * [IOIT](http://ioit.altervista.org/2018-teams-and-contests-.html) + * [InfO(1) cup](http://info1cup.com/) diff --git a/content/1_General/Practicing.md b/content/1_General/Practicing.md new file mode 100644 index 0000000..e69de29 diff --git a/content/0_Intro/5_Intro_Resources.md b/content/1_General/Resources.md similarity index 88% rename from content/0_Intro/5_Intro_Resources.md rename to content/1_General/Resources.md index 0da801d..822e361 100644 --- a/content/0_Intro/5_Intro_Resources.md +++ b/content/1_General/Resources.md @@ -5,18 +5,16 @@ author: Benjamin Qi order: 5 --- -Helpful Links! Some (especially CPH) will be mentioned again in later modules. +Helpful Links! Some (such as CPH and Intro to USACO) will be mentioned again in later modules. -Use [clist.by](https://clist.by/coder/bqi343/) to track your progress! - -### Lists +## Lists * [USACO Resources Page](http://www.usaco.org/index.php?page=resources) * [Awesome List (Inishan)](http://codeforces.com/blog/entry/23054) -### Books +## Books * [Competitive Programmer's Handbook (CPH)](https://cses.fi/book/book.pdf) * The [CSES problemset](https://cses.fi/problemset/) (now at 200 problems) is quite good! @@ -31,17 +29,19 @@ Use [clist.by](https://clist.by/coder/bqi343/) to track your progress! * [Competitive Programming 4](https://cpbook.net/) is the latest edition of the book (with significant additions) but costs money. * Release date is July 19th, 2020. * [Samuel Hsiang - CS Guide](https://github.com/alwayswimmin/cs_guide) + * [TJSCT](https://activities.tjhsst.edu/sct/) + * [TJIOI](https://github.com/tjsct/tjioi-study-guide) * [Principles of Algorithmic Problem Solving](http://www.csc.kth.se/~jsannemo/slask/main.pdf) * [Cracking the Coding Interview](http://www.crackingthecodinginterview.com/) is a good book specifically for programming interviews (it is not needed for USACO). -### Courses +## Courses * [Competitive Programming Course (SuprDewd)](https://github.com/SuprDewd/T-414-AFLV) * [Cousera Algorithms Pt 1 (and Pt 2)](https://www.coursera.org/learn/algorithms-part1) * [Carnegie-Mellon ICPC](https://contest.cs.cmu.edu/295/f17/) * [VPlanet](https://vplanetcoding.com/) -### Algorithm Collections +## Algorithm Collections * [CSAcademy](https://csacademy.com/lessons/) * [cp-algorithms](https://cp-algorithms.com/) @@ -49,3 +49,4 @@ Use [clist.by](https://clist.by/coder/bqi343/) to track your progress! * [bqi343 Github](https://github.com/bqi343/USACO) * [Topcoder Tutorials](http://www.topcoder.com/community/data-science/data-science-tutorials/) * [List of CF Tutorials](http://codeforces.com/blog/entry/57282) + * [ekzlib](http://ekzlib.herokuapp.com) diff --git a/content/1_General/Strategy.md b/content/1_General/Strategy.md new file mode 100644 index 0000000..e69de29 diff --git a/content/2_Silver/1_Silver_Greedy.md b/content/2_Silver/1_Silver_Greedy.md index 332c39d..4821ec1 100644 --- a/content/2_Silver/1_Silver_Greedy.md +++ b/content/2_Silver/1_Silver_Greedy.md @@ -12,10 +12,22 @@ order: 1 # Tutorials - Intro to USACO, Chapter 9 + - Interval Cover - CPH 6 + - [CPC.5](https://github.com/SuprDewd/T-414-AFLV/tree/master/05_greedy_algorithms) # Problems +USACO + - [USACO Why Did the Cow Cross the Road](http://www.usaco.org/index.php?page=viewproblem2&cpid=714) - [USACO Rest Stops](http://www.usaco.org/index.php?page=viewproblem2&cpid=810) - - [USACO High Card Wins](http://usaco.org/index.php?page=viewproblem2&cpid=571) \ No newline at end of file + - [USACO High Card Wins](http://usaco.org/index.php?page=viewproblem2&cpid=571) + +Misc + + - [Sure Bet](https://csacademy.com/contest/archive/task/sure-bet/) + - [Did you Mean...](http://codeforces.com/contest/860/problem/A) + - [Permutation](http://codeforces.com/problemset/problem/864/D) + - [Bus](http://codeforces.com/problemset/problem/864/C) + - [Kayaking](http://codeforces.com/problemset/problem/863/B) \ No newline at end of file diff --git a/content/2_Silver/4_Silver_BinSearch.md b/content/2_Silver/4_Silver_BinSearch.md index 6ba6486..7077b11 100644 --- a/content/2_Silver/4_Silver_BinSearch.md +++ b/content/2_Silver/4_Silver_BinSearch.md @@ -8,7 +8,7 @@ prerequisites: - Silver - Sorting --- -Binary search can be used on monotonic functions for a logarithmic runtime. +[Binary search](https://en.wikipedia.org/wiki/Binary_search_algorithm) can be used on monotonic functions for a logarithmic runtime. @@ -18,8 +18,11 @@ Binary search can be used on monotonic functions for a logarithmic runtime. ## Tutorial -- [GeeksForGeeks](https://www.geeksforgeeks.org/binary-search/) -- [Wikipedia](https://en.wikipedia.org/wiki/Binary_search_algorithm) + - CSES 3.3 + - [Topcoder Binary Search](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/) + - [CSAcademy Binary Search](https://csacademy.com/lesson/binary_search) + - [KA Binary Search](https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/a/binary-search) + - [GeeksForGeeks](https://www.geeksforgeeks.org/binary-search/) ### Library Functions to do Binary Search @@ -41,13 +44,24 @@ Binary search can be used on monotonic functions for a logarithmic runtime. Oftentimes used when you need to find the minimum or maximum of some quantity such that it satisfies some property. ### Tutorial + - Intro to USACO 12.1 ### Problems +USACO + - [USACO Silver Cownvention](http://www.usaco.org/index.php?page=viewproblem2&cpid=858) - [USACO Silver Cow Dance](http://www.usaco.org/index.php?page=viewproblem2&cpid=690) - [USACO Silver Social Distancing](http://www.usaco.org/index.php?page=viewproblem2&cpid=1038) - [USACO Silver Angry Cows](http://usaco.org/index.php?page=viewproblem2&cpid=594) - [USACO Silver Loan Repayment](http://www.usaco.org/index.php?page=viewproblem2&cpid=991) - - Also needs some math and rather tricky "sqrt" analysis \ No newline at end of file + - Also needs some math and rather tricky "sqrt" analysis + +Misc + + - [The Meeting Place Cannot Be Changed](http://codeforces.com/contest/782/problem/B) [](48) + - [Preparing for Merge Sort](http://codeforces.com/contest/847/problem/B) [](53) + - [Level Generation](http://codeforces.com/problemset/problem/818/F) [](54) + - [Packmen](http://codeforces.com/contest/847/problem/E) [](57) + - [Office Keys](http://codeforces.com/problemset/problem/830/A) [](60) \ No newline at end of file diff --git a/content/2_Silver/5_Silver_2P.md b/content/2_Silver/5_Silver_2P.md index 65c5125..23f2a8f 100644 --- a/content/2_Silver/5_Silver_2P.md +++ b/content/2_Silver/5_Silver_2P.md @@ -19,8 +19,16 @@ prerequisites: ## Problems - - [CSES Sum of Two Values](https://cses.fi/problemset/task/1640) - - [CSES Maximum Subarray Sum](https://cses.fi/problemset/task/1643) + - CSES + - [Sum of Two Values](https://cses.fi/problemset/task/1640) + - [Maximum Subarray Sum](https://cses.fi/problemset/task/1643) + - CF + - [Cellular Network](http://codeforces.com/problemset/problem/702/C) [](48) + - [USB vs. PS/2](http://codeforces.com/problemset/problem/762/B) [](53) + - [K-Good Segment](http://codeforces.com/problemset/problem/616/D) [](53) + - [(Long Title))](http://codeforces.com/problemset/problem/814/C) [](54) + - [Jury Meeting](http://codeforces.com/problemset/problem/853/B) [](90) + - USACO?? ## Extensions diff --git a/content/3_Gold/2_Gold_BFS.md b/content/3_Gold/2_Gold_BFS.md index 333a2c0..d244fb9 100644 --- a/content/3_Gold/2_Gold_BFS.md +++ b/content/3_Gold/2_Gold_BFS.md @@ -12,8 +12,6 @@ Compute shortest paths where all edge weights are 1. -## Breadth First Search - - [CSES Message Route](https://cses.fi/problemset/task/1667) ### Tutorial @@ -29,5 +27,6 @@ Compute shortest paths where all edge weights are 1. - [CSAcademy BFS-DFS](https://csacademy.com/contest/round-41/task/bfs-dfs/) [](50) - [Cow Navigation](http://www.usaco.org/index.php?page=viewproblem2&cpid=695) - [Dream](http://www.usaco.org/index.php?page=viewproblem2&cpid=575) + - bad problem ... - [Lasers](http://www.usaco.org/index.php?page=viewproblem2&cpid=671) - [Monsters](https://cses.fi/problemset/task/1194) \ No newline at end of file diff --git a/content/3_Gold/3_Gold_TopoSort.md b/content/3_Gold/3_Gold_TopoSort.md index 0d14b87..c3d41a1 100644 --- a/content/3_Gold/3_Gold_TopoSort.md +++ b/content/3_Gold/3_Gold_TopoSort.md @@ -18,11 +18,12 @@ A [topological sort](https://en.wikipedia.org/wiki/Topological_sorting) of a dir ## Tutorial -(BFS Implementation?) - - CPH 16.1, 16.2 + - DFS - [cp-algorithms](https://cp-algorithms.com/graph/topological-sort.html) + - DFS - [CSAcademy](https://csacademy.com/lesson/topological_sorting) + - both BFS, DFS ## Problems diff --git a/content/3_Gold/4_Gold_SP.md b/content/3_Gold/4_Gold_SP.md index 3229bbf..521b232 100644 --- a/content/3_Gold/4_Gold_SP.md +++ b/content/3_Gold/4_Gold_SP.md @@ -68,18 +68,20 @@ Use the *Floyd-Warshall* algorithm. ## Negative Edge Weights -Hasn't appeared in recent USACO Gold as far as I know. Usually Bellman-Ford is used. If no negative cycles, can use [Shortest Path Faster Algorithm](https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm) or modify Dijkstra slightly (though the same running time bound no longer applies). + - Hasn't appeared in recent USACO Gold as far as I know. + - Usually Bellman-Ford is used. + - If no negative cycles, can use [Shortest Path Faster Algorithm](https://en.wikipedia.org/wiki/Shortest_Path_Faster_Algorithm) or modify Dijkstra slightly (though the same running time bound no longer applies). ### Tutorial - * [cp-algo Bellman Ford](https://cp-algorithms.com/graph/bellman_ford.html) - * [Topcoder Graphs Pt 3](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-3/) + - [cp-algo Bellman Ford](https://cp-algorithms.com/graph/bellman_ford.html) + - [Topcoder Graphs Pt 3](https://www.topcoder.com/community/data-science/data-science-tutorials/introduction-to-graphs-and-their-data-structures-section-3/) You can also use shortest path algorithms to solve the following problem (a very simple [linear program](https://en.wikipedia.org/wiki/Linear_programming)). > Given variables $x_1,x_2,\ldots,x_N$ with constraints in the form $x_i-x_j\ge c$, compute a feasible solution. - * [Linear Programming Trick](https://www.cs.rit.edu/~spr/COURSES/ALG/MIT/lec18.pdf) + - [Linear Programming Trick](https://www.cs.rit.edu/~spr/COURSES/ALG/MIT/lec18.pdf) ### Problems diff --git a/content/3_Gold/5_Gold_MST.md b/content/3_Gold/5_Gold_MST.md index b2188bc..8be6438 100644 --- a/content/3_Gold/5_Gold_MST.md +++ b/content/3_Gold/5_Gold_MST.md @@ -51,8 +51,4 @@ Disjoint Set Union and Minimum Spanning Trees ## Other Problems - [Birthday Gifts](https://www.hackerearth.com/practice/math/combinatorics/inclusion-exclusion/practice-problems/algorithm/mancunian-and-birthday-gifts-d44faa15/) [](73) - - [Spanning Tree Fraction](https://www.hackerrank.com/contests/w31/challenges/spanning-tree-fraction) [](78) - -## Boruvka? - -(add) \ No newline at end of file + - [Spanning Tree Fraction](https://www.hackerrank.com/contests/w31/challenges/spanning-tree-fraction) [](78) \ No newline at end of file diff --git a/content/3_Gold/6_Gold_BIT.md b/content/3_Gold/6_Gold_BIT.md index ec51c5d..2566c57 100644 --- a/content/3_Gold/6_Gold_BIT.md +++ b/content/3_Gold/6_Gold_BIT.md @@ -89,4 +89,4 @@ Note that if it were not the case that all elements of the input array were dist * aka [Sorting Steps](https://csacademy.com/contest/round-42/task/sorting-steps/) [](42) * Of course, this doesn't require anything other than sorting but fast range sum queries may make this easier. * [Twin Permutations](https://www.hackerearth.com/practice/data-structures/advanced-data-structures/fenwick-binary-indexed-trees/practice-problems/algorithm/mancunian-and-twin-permutations-d988930c/description/) - * Offline 2D -> 1D \ No newline at end of file + * Offline 2D queries can be done with a 1D data structure \ No newline at end of file diff --git a/content/3_Gold/7_Gold_NT.md b/content/3_Gold/7_Gold_NT.md index 26c02f4..14696f5 100644 --- a/content/3_Gold/7_Gold_NT.md +++ b/content/3_Gold/7_Gold_NT.md @@ -22,9 +22,26 @@ Also see here: https://codeforces.com/blog/entry/77137 - * Tutorial - * CPH (23, Matrices) - * Problems - * [Currencies](https://www.hackerrank.com/contests/gs-codesprint/challenges/currencies) [](107) + - Tutorial + - CPH (23, Matrices) + - Problems + - [Currencies](https://www.hackerrank.com/contests/gs-codesprint/challenges/currencies) [](107) COWBASIC + +(old) + + +### 4 + + * Eratosthenes' Sieve + * Tutorial + * CPH (21, NT) + +### 5 + + * Modular Arithmetic + * Modular Inverse + * Chinese Remainder Theorem + * Euler's Theorem, Phi Function + * Discrete Logarithm \ No newline at end of file diff --git a/content/4_Plat/4_Plat_Geo.md b/content/4_Plat/4_Plat_Geo.md index 6341102..80c38f5 100644 --- a/content/4_Plat/4_Plat_Geo.md +++ b/content/4_Plat/4_Plat_Geo.md @@ -15,21 +15,50 @@ You should know basic operations like cross product and dot product. For platinu ### Tutorial - - CPH 29, 30.1 - - [TopCoder](https://www.topcoder.com/community/competitive-programming/tutorials/geometry-concepts-basic-concepts/) + - [CPC.12](https://github.com/SuprDewd/T-414-AFLV/tree/master/12_geometry) + - basic geometry + - convex hulls + - polygon area + - point in polygon + - closest pair of points + - CPH 29 + - [TopCoder - Basic Geometry Concepts](https://www.topcoder.com/community/competitive-programming/tutorials/geometry-concepts-basic-concepts/) - [CF - Point Class](https://codeforces.com/blog/entry/48122) - [C++ - std::complex](https://codeforces.com/blog/entry/22175) - - [cp-algo - "Elementary Operations"](https://cp-algorithms.com/) - - [vlecomte - geo book](https://codeforces.com/blog/entry/59129) + - [cp-algo - Geometry: "Elementary Operations"](https://cp-algorithms.com/) + - [vlecomte - Geometry Handbook](https://codeforces.com/blog/entry/59129) - [My Templates](https://github.com/bqi343/USACO/tree/master/Implementations/content/geometry%20(13)/Primitives) +### Problems + + - Template Testing + - [Kattis Segment Distance](https://open.kattis.com/problems/segmentdistance) + - [Kattis Segment Intersection](https://open.kattis.com/problems/segmentintersection) + - [Kattis Point in Polygon](https://open.kattis.com/problems/pointinpolygon) + - [Kattis Polygon Area](https://open.kattis.com/problems/polygonarea) + - [Kattis Max Collinear](https://open.kattis.com/problems/maxcolinear) + - Misc + - [Arpa & Geo](http://codeforces.com/problemset/problem/851/B) + - [Tell Your World](http://codeforces.com/problemset/problem/849/B) + - [Gleb & Pizza](http://codeforces.com/problemset/problem/842/B) + - [Birthday Cake](https://open.kattis.com/problems/birthdaycake) + - [Racing Off Track](https://open.kattis.com/contests/acpc17open/problems/racingofftrack) + - [TopCoder Watchtower](https://community.topcoder.com/stat?c=problem_statement&pm=2014&rd=4685) + ## Sweep Line +### Tutorial + + - CPH 30 - [TopCoder Line Sweep](https://www.topcoder.com/community/competitive-programming/tutorials/line-sweep-algorithms/) + +### Problems + - [Cow Steepchase II (Silver)](http://www.usaco.org/index.php?page=viewproblem2&cpid=943) - :| + - [Kattis Closest Pair](https://open.kattis.com/problems/closestpair2) -## Convex Hull +## [Convex Hull](https://en.wikipedia.org/wiki/Convex_hull_algorithms) - [Kattis Convex Hull](https://open.kattis.com/problems/convexhull) @@ -49,55 +78,19 @@ You should know basic operations like cross product and dot product. For platinu - [USACO Plat Falling](http://www.usaco.org/index.php?page=viewproblem2&cpid=998) - [USACO Old Gold - Fencing](http://www.usaco.org/index.php?page=viewproblem2&cpid=534) - [USACO Old Gold - Cow Curling](http://www.usaco.org/index.php?page=viewproblem2&cpid=382) + - [Kattis Fence Orthogonality](https://open.kattis.com/problems/fenceortho) - [AGC 44 Random Pawn](https://atcoder.jp/contests/agc044/tasks/agc044_e) - Generalization of "Balance" -(old) +## Half-Plane Intersection / Convex Stuff + - [Blogewoosh (Half-Plane Intersection w/ Ternary Search)](https://codeforces.com/blog/entry/61710) + - [retrograd Half-Plane Intersection](https://codeforces.com/blog/entry/61710?#comment-457662) + - [Petr (Linear Half-Plane Intersection)](https://petr-mitrichev.blogspot.com/2016/07/a-half-plane-week.html) + - [KACTL LineContainer](https://github.com/kth-competitive-programming/kactl/blob/master/content/data-structures/LineContainer.h) + - [Lichao Segment Tree](http://codeforces.com/blog/entry/51275?#comment-351510) -[CPC.12](https://github.com/SuprDewd/T-414-AFLV/tree/master/12_geometry) +### Problems -## 4 - - * Misc Stuff to Know - * Topics - * std::complex, pair operators - * Closest Pair - * MaxCollinear - * Point in Polygon - * Polygon Area - * Line Segment Intersection - * Tutorial - * [TopCoder](https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-basic-concepts/) - * [Point Class](http://codeforces.com/blog/entry/48122) - * [Easy Geo w/ std::complex](http://codeforces.com/blog/entry/22175) - * [Geo Book](http://codeforces.com/blog/entry/59129) - * CPH (29, Geometry) - * Problems - * [Arpa & Geo](http://codeforces.com/problemset/problem/851/B) - * [Tell Your World](http://codeforces.com/problemset/problem/849/B) - * [Gleb & Pizza](http://codeforces.com/problemset/problem/842/B) - * [Birthday Cake](https://open.kattis.com/problems/birthdaycake) - * [Racing Off Track](https://open.kattis.com/contests/acpc17open/problems/racingofftrack) - * [TopCoder Watchtower](https://community.topcoder.com/stat?c=problem_statement&pm=2014&rd=4685) - * Convex Hull - * Tutorial - * CPH (30, Sweep Line Algorithms) - * [TopCoder Line Sweep](https://www.topcoder.com/community/data-science/data-science-tutorials/line-sweep-algorithms/) - * Topics - * Convex Hull - * [Wikipedia](https://en.wikipedia.org/wiki/Convex_hull_algorithms) - * Andrew's Monotone Chain (I prefer) - * Graham Scan - * Additional - * [Lichao Segment Tree](http://codeforces.com/blog/entry/51275?#comment-351510) - * Half-Plane Intersection - * [Blogewoosh (Ternary Search)](https://codeforces.com/blog/entry/61710) - * [retrograd](https://codeforces.com/blog/entry/61710?#comment-457662) - * [Petr (Linear](https://petr-mitrichev.blogspot.com/2016/07/a-half-plane-week.html) - * LineContainer - * maintaining separate ones for bottom and top hulls should suffice? - * Problem(s) - * [Bridges](https://csacademy.com/contest/archive/task/building-bridges/) - * [Fence Orthogonality](https://open.kattis.com/problems/fenceortho) - * [A2OJ](https://a2oj.com/category?ID=22) + - [Bridges](https://csacademy.com/contest/archive/task/building-bridges/) + - direct application of LineContainer diff --git a/content/4_Plat/5_Plat_Graphs.md b/content/4_Plat/5_Plat_Graphs.md index c924074..cb38e6c 100644 --- a/content/4_Plat/5_Plat_Graphs.md +++ b/content/4_Plat/5_Plat_Graphs.md @@ -18,7 +18,6 @@ Note: all except the third have not appeared on a recent USACO contest. *Some problems sourced from [here](http://codeforces.com/blog/entry/54526?#comment-385354).* - ## Eulerian Tours Has not appeared on a recent USACO contest. diff --git a/content/4_Plat/7_Plat_Bitset.md b/content/4_Plat/7_Plat_Bitset.md index 3728863..dc217a5 100644 --- a/content/4_Plat/7_Plat_Bitset.md +++ b/content/4_Plat/7_Plat_Bitset.md @@ -180,5 +180,5 @@ Again, the intended solution runs in $O(N^3)$. Of course, it is still possible t Using operations such as `_Find_first()` and `_Find_next()` mentioned in Errichto's blog above, you can speed up the following: - * BFSing through a dense graph with $N$ vertices in $O(N^2)$ - * bipartite matching in $O(N^3)$ \ No newline at end of file + - BFSing through a dense graph with $N$ vertices in $O(N^2)$ + - bipartite matching in $O(N^3)$ \ No newline at end of file diff --git a/content/4_Plat/8_Plat_Fracture.md b/content/4_Plat/8_Plat_Fracture.md index 76d6245..aeb096c 100644 --- a/content/4_Plat/8_Plat_Fracture.md +++ b/content/4_Plat/8_Plat_Fracture.md @@ -295,6 +295,7 @@ int main() { ## Other Problems - - [Baltic OI 2019 - Olympiads](https://cses.fi/248/submit/D) + - [Baltic OI 2019 - Olympiads](https://cses.fi/248/list/) + - Each state has $\le K$ children. - [CCO 20 Shopping Plans](https://dmoj.ca/problem/cco20p6) - Generalization of Robotic Cow Herd \ No newline at end of file diff --git a/content/4_Plat/9_Plat_Slope.md b/content/4_Plat/9_Plat_Slope.md index 425a470..91b079a 100644 --- a/content/4_Plat/9_Plat_Slope.md +++ b/content/4_Plat/9_Plat_Slope.md @@ -190,15 +190,18 @@ int main() { ## Problems - [Moving Haybales (USACO Camp)](https://probgate.org/viewproblem.php?pid=247) + - similar to "Potatoes" - [Wall](https://atcoder.jp/contests/kupc2016/tasks/kupc2016_h) - same as "Potatoes" - [Stock Trading (USACO Camp)](https://probgate.org/viewproblem.php?pid=531&cid=81) - extension of "Buy Low Sell High" - - [Bookface](https://codeforces.com/group/ZFgXbZSjvp/contest/274852/problem/C) + - [Bookface](https://codeforces.com/gym/102576/problem/C) - [CCDSAP Exam](https://www.codechef.com/problems/CCDSAP) + - basically same as Bookface - [Farm of Monsters](https://codeforces.com/gym/102538/problem/F) - [Moving Walkways](https://codeforces.com/contest/1209/problem/H) - [April Fools' Problem](https://codeforces.com/contest/802/problem/O) + - binary search on top of slope trick - [Conquer the World](https://icpc.kattis.com/problems/conquertheworld) - - note: ICPC world finals, 0 solves in contest + - ICPC world finals, 0 solves in contest - "Potatoes" on tree!! \ No newline at end of file