How to Study for USACO?

Hey everyone,

I’m a rising Junior and I want to get started on preparing for USACO. This will be my first year. However, the only programming language I’m experienced in is Python.

I’m going to start learning C++. But, how else should I study for USACO? What type of problems should I expect?

Also, do you think I’ll be able to hit Gold by the end of Junior year?

Thanks for reading!

It depends on your programming prowess. I’m not sure how much programming you’ve done or how much experience you’ve had, but both of those things will factor into how fast you will progress.

I started in my sophomore year and was able to reach Gold by the end of it, but I’ve been programming for quite some time now.

Preparation is pretty simple. Just go to USACO’s official training page: http://usaco.org/index.php?page=training and follow their online training exercises. They have hundreds of them, and they’re are very accurate to what you will see in the actual competitions.

As for the programming language, it’s completely up to you. USACO supports a variety of languages, including some rather obscure ones that probably aren’t used by most people. I personally use C for its speed and efficiency, and also because its a very effective language and I have a lot of experience in it. Python is a nice, simple language; however, it is notoriously slow and you may run into problems with long run-times. And don’t learn C++; it’s poisonous. If you want to learn a language, learn either C or Java; both will serve you well in the future. As for now, you’re probably most experienced in Python so I would recommend using that, but you’re going to need to take a little extra time to optimize the efficiency of your code.

There is some training materials on the USACO website. If you just go through them, you should be fine. I heard that one of my friend’s friend spent the entire summer doing it, and then he went on to USACO Gold (before there was a platinum). I will say programming in python will be difficult given how slow the language is. C++ I would say is the best choice. Keep in mind though that the contest isn’t about how well you know about the programming language. In fact, you can probably do the entire competition just understanding arrays and loops. It is more about algorithmic way of thinking. The most efficient way to prepare for this to do these kind of competition like the training page, topcoder, etc. Most advanced programmers I know (including me) have difficulty with these competition despite years of programming. It is very different from your typical programming.

Thank you to both of you guys. I’ve decided to study really hard on Java. I’ve picked up on the book, Head First Java, and finished MOOC.fi on OOP Java.

I’m going to try my best! Not only because USACO looks good on college apps, but primarily because it’ll be beneficial for my future. Thanks.