I'm a Newbie on Codeforces — 969 rating, 134 problems solved over the last year, best streak 15 days. Not a flex post, just context so you know where this is coming from.
The thing I actually want to talk about is a gap I still haven't closed: basic coordinate and distance-type problems. Not hard geometry — I'm not talking convex hulls or line intersections, I'm talking the simple stuff. Knight-on-a-chessboard type questions. "Given two cells, how many moves does a knight need" or "what's the minimum distance here" — problems that are supposed to be easy once you know the setup.
And I still don't reliably know the setup. That's the honest part. It's not that I get the formula wrong, it's that I don't have the formula in my head at all when I sit down, so I end up trying to reconstruct the logic from scratch mid-contest, which is slow and shaky and exactly the kind of thing that shouldn't be happening on an "easy" problem. This isn't a "used to struggle, now I've got it" story either — it's happening right now, this month.
What I think is actually going on: I never sat down and drilled the small set of standard coordinate patterns on their own — knight distance, taxicab (Manhattan) distance, Euclidean distance and when each one applies, grid boundary checks. I've been meeting them one at a time, inside random problems, and moving on the moment each one is solved instead of banking the pattern for next time. So the same idea shows up again a few weeks later and I'm back to square one.
The plan, for whoever's in the same spot: stop treating these as "just another problem" and actually isolate them. Pull every coordinate/distance problem I've solved or attempted, write the core formula or rule for each one down somewhere I'll actually look at again, and drill variations of the same pattern back to back instead of one and moving on. Basic stuff. But I clearly skipped it, and it's catching up with me at 969.
If you've got a similar gap — small, "should be easy" categories that keep tripping you up no matter how many harder problems you've cleared — I'd guess it's the same root cause: the fundamental pattern was never actually locked in, just pattern-matched once and forgotten.







