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/Intro.md
2020-06-21 23:32:32 -04:00

4.4 KiB
Raw Blame History

id title author description
intro Introduction Nathan Wang, Benjamin Qi, Darren Yao Welcome to the guide! We'll introduce what programming competitions are and how this guide is organized.

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.

More Information

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.

Module Organization

All material in this guide will be grouped into modules such as the one you're reading right now.

Guidelines

  • Should be a "one stop shop," meaning that this is the only site you have to use to be exposed to most (if not all) of the topics required for Bronze - Gold.
    • The idea is that people will no longer have to go resource hunting as well do all of that for them.
  • "Dont Reinvent the Wheel"
    • We'll link to online resources that already exist whenever possible.
  • Not just a collection of links
    • There exist plenty of resources out there, but we do not expect users to click through all of them to find the information they want.
    • This means in addition to the link itself we need to provide information about what the link is about as well as the quality of the link.
    • We dont want to say something like "learn DP, here are 50 links that can teach you that." Instead, we want to say "learn DP by first reading this one article, then reading this other article. For reference, here are some other links you can explore as you wish."

Lesson

  • Consists of text, videos, and simple problems.
  • Goal is to introduce user to the concept.
  • Everything should be completed in order.
  • Any problems here should be pure implementation.
  • Languages
    • Include C++ and Java for all divisions. (C++ takes priority)
    • Possibly Python for Bronze.

Practice

  • Link the relevant past USACO problems (and other recommended problems).
  • Problems should be sorted in order of how they are recommended be completed.
    • Add comments regarding difficulty and / or solution sketches.
  • Possibly include additional problems.