unorz's blog

By unorz, history, 5 hours ago, In English

There is a moment in Haikyuu where Hinata realizes that being good at volleyball does not automatically mean being good at high level volleyball. The fundamentals transfer but the game is faster, the reads are different, and raw talent stops being enough. I think about that a lot with competitive programming.

I started CF as a USACO Silver. My first rated round was a Div. 2 and it went badly. I solved A, B, and C, WA-ed on C five times, and never touched D even though I probably had it. The problems were not the issue. The clock was.

The format is just different

USACO is slow and curated. Four contests a year, three problems, hours to think, partial credit, unlimited resubmissions. CF is two hours, five to eight problems, all or nothing, and a 50 point penalty every time you submit wrong. That penalty changes your behavior more than you expect. On USACO you can throw a solution at the wall. On CF you have to actually think before hitting submit, which feels unnatural at first.

I also started listening to music during rounds which sounds trivial but genuinely helped. The live leaderboard updating every minute creates this low grade panic that compounds over time. Having something in your ears breaks that feedback loop a little.

Where USACO maps to:

Silver is roughly Div. 3 to low Div. 2, somewhere around 1200 to 1700. Gold is comfortable Div. 2, around 1700 to 2100. These are rough because CF rating also measures speed. A slow Gold performer might start at 1400 and climb. Your first rating means very little.

Things that will actually trip you up:

Problem ordering. A and B in a Div. 2 are often trivial. Read fast, code fast, move on. The USACO instinct is to sit with a problem until it clicks. On CF that mindset doesn't fly.

Interactive problems. USACO almost never has these. CF does. Forget to flush output (cout << endl or fflush(stdout)) and you will get mysterious TLE with no obvious reason.

Default to long long for anything involving multiplication. CF test cases are designed to break int and it will happen to you.

The hack phase. In Div. 1+2 after AC you can submit failing test cases against other contestants. Free points, and it trains you to think about edge cases before submitting.

How to start:

Do not start with rated contests. Do some Div. 2 A/B problems virtually first to calibrate your speed. Then try a few Div. 3s rated. Your first contest is unranked anyway.

Upsolve after every round. Solve everything you could not finish. CF's archive is huge and well tagged, filtering by rating around your level is one of the most efficient ways to get better.

The actual point:

I am Gold now. The algorithms were never the problem. Silver USACO knowledge is more than enough for Div. 3 and early Div. 2. What I was actually missing was the mechanics: the penalty mindset, knowing when to skip, managing the clock. That stuff is learnable fast once you know it is the thing you need to learn.

One more thing

Do not do this for your resume. Competitive programming for job prep is a different activity with a different mindset and it shows. The people who actually get good are the ones who find something genuinely enjoyable about sitting with a hard problem, not the ones who are here because they heard it helps with FAANG interviews. You can usually tell within a few exchanges on CF who is there because they love it and who is treating it like a checklist item. The latter group plateaus fast.

If you are doing this because you actually enjoy it, welcome. It is a good use of your time. If you are doing it purely for placement season, there are more efficient ways to spend those hours.

P.S. I do write up solutions on USACO Guide whenever I'm free if you want to check out my editorials there.

  • Vote: I like it
  • -25
  • Vote: I do not like it

»
5 hours ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by unorz (previous revision, new revision, compare).