Join the Introduction to USACO Workshop!Want to learn more about USACO? Join the Introduction to USACO Workshop!Learn more →

Getting started with USACO can be challenging. Here, we address some of the most common questions people have.

Share this article!

USACO stands for the USA Computing Olympiad.

Resources | |||
---|---|---|---|

USACO | more about contest format |

USACO contests are scored out of $1000$ points. Recent contests each have three equally weighted problems; that is, each problem is worth $1000/3 = 333.333 \dots$ points. Each problem has $10 \dots 25$ test cases weighted equally. For example, if a contest has three problems, and problem 1 has 10 test cases, then you will get $333.333 \dots/10 = 33.333\dots$ points for each test case that you get correct for problem 1.

At the end of the contest, a "cutoff score" for each division is determined based on the difficulty of the contest. If your score is above the "cutoff score" for your division, then you get promoted to the next division. Historically, the cutoff score has always been a multiple of $50$ points in the range $600\ldots 850$ (typically $750$).

If you get a perfect score during the contest (ie. you solve all three problems
correctly), then you get an *in-contest promotion*, where you immediately get
promoted to the next division. You can start the next division's contest
whenever you want during the contest window; your four-hour timer resets when
you start the contest.

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

- If you already know one or more of these languages, just use the one you are most comfortable with.
- If you don't know any of these languages, you might as well start with C++, as C++ users generally don't need to worry as much about their solutions being a constant factor too slow. Furthermore, most modules currently lack Java and Python support.

Don't overthink choosing a language -- you can always change languages later!

We cover choosing a language in more detail in our "Choosing a Language" module.

Learn algorithms, do practice problems, and reflect on why you're missing problems. Make sure you learn from every problem you do, and you'll improve over time. If you're looking for a guided roadmap to improve at USACO, check out the USACO Guide (that's this site!)

If you want to get better at USACO, the key thing is to **do more practice**!

We made the USACO Guide specifically to provide high-quality resources to help people get better at USACO; we encourage you to give it a shot! We also list additional resources that you may find helpful. Additionally, USACO has its own resources page.

We recommend you go to the
(unofficial) USACO Forum to get help when you're
stuck. Alternatively, you can join the
(unofficial) USACO Discord Server. They
have channels called `#cp-discussion`

and `#cp-help`

dedicated to questions
about competitive programming.

It really comes down to personal preference; there's no right or wrong answer -- do what works for you! With that being said, we've asked numerous top USACO competitors what they think about this question. This module lists their thoughts on how to effectively practice for USACO.

Usually, yes (unless the problem is significantly too easy for you). Solving competitive programming problems consists of two parts: coming up with the algorithm, and implementing the algorithm. You should implement so that you practice both parts.

While there is no official USACO syllabus, we've compiled topics for each division from historical contests:

CodeForces -- you can search by tag, difficulty level, etc.

For additional sources of problems, check the contests page.

CodeForces rating and USACO divisions shouldn't be compared since CF emphasizes
solving problems quickly (5-8 problems under 2 hours time constraint), while
USACO has harder problems and more time (3 problems in 4-5 hours). However, here
are some *very rough* estimates:

- USACO Bronze competitors are probably <1300 rated on CF, and Bronze problems correspond to 900-1500 rated CF problems.
- USACO Silver competitors are probably 1200-1500 rated on CF, and Silver problems correspond to 1200-1900 rated CF problems.
- USACO Gold competitors are probably 1500-1800 rated on CF, and Gold problems correspond to 1500-2200 rated CF problems.
- USACO Platinum competitors are probably 1650+ rated on CF, and Platinum problems correspond to 1900+ rated CF problems. (Note that at the Platinum level there is a
*lot*of variation in CF ratings.)

Again, CF problems and contests are *significantly different* from USACO!

We hope you've found this FAQ useful! If you have any additional questions, please feel free to ask on the USACO Forum and we'll do our best to answer them.

Best of luck on your competitive programming journey!