This repository has been archived on 2022-06-22. You can view files and clone it, but cannot push or open issues or pull requests.
usaco-guide/content/1_Intro/Getting_Started.md
2020-06-18 21:15:13 -04:00

3.4 KiB

id title author description
getting-started Getting Started Nathan Wang, Benjamin Qi, Darren Yao Welcome to the guide! Here we'll explain what a programming competition is, how it works, and how to choose a language.

Introduction

A programming competition generally lasts for several hours and consists of a set of problems. These problems are not open problems; they have already been solved by the problem writer(s) and tester(s) and (hopefully) are designed to be solved in the short timeframe of a contest. In general, each problem in competitive programming is solved by a two-step process:

  1. coming up with the algorithm, which involves problem solving skills and intuition
  2. implementing the algorithm, which requires programming skills to translate the algorithm into working code.

For each problem, when you complete your code you submit it to a grader, which checks the answers calculated by the your program against a set of predetermined test cases. For each problem, you are given a time limit (usually 2 seconds) and a memory limit (usually 256 megabytes) that your program must satisfy.

For those of you with experience in software development, note that competitive programming is quite different, as the goal is to write programs that compute the correct answer, run quickly, and can be implemented quickly. Note that nowhere was maintainability of code mentioned. So you don't need to bother documenting your code because it only needs to be readable to you during the contest.

Videos

Contest Format

The USA Computing Olympiad is a national programming competition that occurs four times a year, with December, January, February, and US Open (March) contests. The regular contests are four hours long, and the US Open is five hours long. Each contest contains three problems. Solutions are evaluated and scored against a set of predetermined test cases that are not visible to the student. Scoring is out of 1000 points, with each problem being weighted equally (~333 points). There are four divisions of contests: Bronze, Silver, Gold, and Platinum. After each contest, students who meet the contest-dependent cutoff for promotion will compete in the next division for future contests.

Choosing a Language

The most popular languages that USACO supports are C++11, Java, and Python 3. In general, we recommend the following:

  • If you already know one of these languages, just use it.
    • If you know multiple languages, we recommend you pick C++ over Java, and Java over Python.
  • For Bronze, any language will do.
  • For Silver, Gold, and Platinum, Python is not recommended.

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!

Language References

All of these are provided at the IOI aside from the additional C++ reference.