I first learned C++ early last year, and now I'm almost red on Codeforces, with just about 4 months left until my first and only Korean Team Selection Contest for IOI.
As mentioned in the title, I don't really understand why I only perform well on Codeforces. Recently, I had a terrible performance on AtCoder arc181, and even a few months ago, my results in the Korean Olympiad in Informatics were far from what you'd expect from someone close to red.
I also tried reading through last year's Korean Team Selection Contest problems, but I couldn’t shake the feeling that I wouldn't be able to solve them. One of the participants in the contest, Kawaii2DIdolOfGSHS, solved incredibly difficult problems one of the problem if you are interested... during the competition and achieved a pretty good ranking.
I’ve also attempted solving JOI problems. Is it normal to take several days to solve one OI problem, even while referring to editorials? After trying a few problems, I gave up because the time and effort didn’t seem worth it.
With the Korean Team Selection Contest just around the corner, I’m not sure what to do. I’ve never performed well in any contests other than Codeforces, and I’m worried that I won’t do well in the upcoming contest.
Honestly, at this point, I’m pretty sure I won’t even make it into the top 10 if I participate in the Korean Team Selection Contest in my current state.
What is the best course of action I can take in the remaining 4 months to prepare for the Korean Team Selection Contest?
Summary : 1. I can't solve hard problems (especially OI style) 2. My performance is bad other than Codeforces. 3. How can I perform well in team selection contest?
There is no advice I can give you, I wish others will do that, but I hope you perform really well in TST. Best of luck my friend <3
thank you.
You need to do OI vc's and gain some experience , OI problems are different in a way that , most of the time getting a full score is really hard and problems require hard implementations and data structures.
At first you can start with COCI problems which are easier compared to other OI's , once you feel comfortable with 5 hour time length and collecting subtasks you can try any OI you want. I dont have any recommendations as I think once you get comfortable with OI style you will start doing good , one last thing is try collecting subtasks and get as much points as you can in OI vc's , dont skip subtasks thinking you could easily do it. Because collecting subtasks is a time consuming thing and requires being fast which you need some practice on.
OK. COCI looks good. Are there any particular seasons you recommend?
you can start from the latests ones and go backwards , also first 2 problems in COCI are most of the time easy , so you can skip them and see last 3 problems only
OK. thanks for the tips :)
Back in the day I used to train with problems from USACO, Baltic OI, Polish OI and problems on Peking OJ. Although my rating (in 2019) was nothing compared to others but I managed to get a good result in my country OI and European ICPC afterward.
idk once, I tried to understand one of usaco's problem USACO 2018 January Contest Platinum2 even though I spent a whole day trying to understand the editorial, I couldn't understand it. Is there some source you use when you don't understand the editorial? reading editorial is takes way long time and most of the time just turns out to be a waste of time for me because I don't get it...
Do you have a coach or some OI friends to talk to? I believe discussing with others helps a lot, especially when you present your ideas to your peers.
In some cases reading highly-ranked participant codes can help as well. Sometimes the tutorials are just badly-written (e.g. no proofs, lack of intuitions provided), and I just read the code of others and trace back their ways of thinking.
It there a place where I can see other good coder's codes? I only know oj.uz but as far as I know, there are no usaco problems on oj.uz.
I noticed that you may have problem understanding tutorials. That's totally reasonable, as some official tutorials are actually not well written or just can't fit in your brain. Try googling tutorials written unofficially, i.e., by other CPers. I'll recommend Luogu, as mentioned in this blog, not only because I'm a Chinese OIer, but also due to Luogu has rich archive of global OI contests (including USACO, Baltic OI, Polish OI, COCI, Japan OI, etc.), and most of them have multiple unofficial tutorial written by users.
I registered in Luogu just now and read this. I have no idea how to use this OJ. can you give me some guide on how to use Luogu?
You can refer to this blog.
Oh, sorry, this is about how to participate in contests. For a more comprehensive guide, check this, this and this.
I'm having difficulty finding the tutorials you mentioned. I couldn't find any in the discussion tab? example where are they?
Tutorials are in the
查看题解
tab, right side of the problem page. If you are in a "contest mode", you may need to click an evident退出比赛模式
button (if you've never seen this before, ignore this)and Indeed yes. I think most of my problem comes from having difficulty understanding editorials.
For a lot of older USACO problems where I struggled to understand USACO editorial, I'd try to find corresponding CF blog and see if people gave alternate solutions. I remember doing the same problem you mentioned before and found multiple easier solutions on the cf blog a while back.
You can find them here
If you are looking for code for USACO problems beyond the editorial, there is a good chance that someone with a public GitHub repo has already done it. For example:
https://github.com/bqi343/cp-notebook/tree/master/Contests/USACO%20Solutions https://github.com/dolphingarlic/CompetitiveProgramming/tree/master/USACO https://github.com/thecodingwizard/competitive-programming/tree/master/USACO
I don't have a coach. I do have some OI friends biximo but they're busy with their college plans (probably)
e3e will win IOI 2025 ‼️‼️
I truly admire that you've been learning C++ since last year and have made significant progress, approaching mastery in just over a year. Respect, mate!
jiangly reached LGM within a year. orz
As a person that almost never touched OI problems during practice, I think the biggest difference is just contest length. In longer contests you need to use time in some way instead of sitting idly waiting for the contest to end. Fortunately in OI you have too much time per problem, so it's just a matter of getting used to spending one full cf contest length to solve one problem.
Where the hell are GM's and LGM's when we need them !!!
Here is what I have to say about this issue. The reason is probably a simple lack of practice. It's basically like saying that you are only good at running 100m but not 400m. Those two are definitely correlated, but still not the same thing. If you want to improve at OI — solve more OI problems. The difference between codeforces and OI is fairly significant. OI tends to be more implementation-heavy / data structures-related. Also problems may be more "complex", in the sense that they require more details and small observations to be solved. The time-management skills are also much more important. On codeforces, always solving problems in order may not be a perfect strategy, but it's good enough. On OI, you have to make sure to solve all the subtasks you can; in addition to that, problems are rarely sorted in order of difficulty. I am saying all of this just to emphasize the point that it's normal not to do well on OI if you have not trained for OI all that much. So how to fix it, well, just train for OI: do virtual contests and upsolve them, or any other training method you prefer. Regarding the fact that you struggle to upsolve a problem even with the editorial: the problem is either too hard, editorial is too bad, or you are just not good enough at implementation. The last possibility is actually very likely cause on codeforces that skill barely matters. Again, not much to say; there is no mystery; you just have to get better at it. Is it painful? It depends on your personality, I guess. For me, 100%.
The last thing I'd like to point out is how you have mentioned a feeling that you wouldn't be able to solve those problems. Just try to participate virtually in that contest and see how it goes(if that option is not available on the platform, just measure the time yourself). I know that feeling very well, but I've managed to come to terms with it. It's okay that you don't know how to solve a problem right after reading it. You are not supposed to. During the contest, you have plenty of time; thus, assessing the difficulty of the problem without spending some time on it is basically impossible.
So, in conclusion, your codeforces practice is not a waste of time by any means, but you are just not training for the right. It's still great for your problem solving ability overall, but now, when TSC is approaching, you need to focus on preparing for OI. You have 4 month, which means you are more than able to turn the tables and become good at OI, considering your codeforces background. Just keep in mind that you are not "entitled" to good OI results just because of your codeforces rating.
This hits way too close to the home
Question has been mostly answered here, but to reiterate and summarize:
You want to spend your remaining time practicing contest styles as close as possible to the OI you're training for. I presume Korean Selection is 3 problems for 5 hours in IOI-style, so practice this format only. You can talk with your peers about which other OIs have a similar "style" to Korean selection. It's hard to properly define what that means, but if you've got some friends who've been solving a ton of other OIs instead of doing CF, they'll probably have a gut feeling of which ones felt more in the style of the Korean selection and which ones didn't (this is essentially gonna be an intuitive summary of syllabus, difficulty, and problemset composition specifics).
I'd personally recommend you supplement regular training with virtual participations. I.e. try to do a proper continuous 5h simulation of some OI that you haven't seen before and try to score as high as possible.
You're most likely lacking the ability to dig extremely deep into a problem. Most CF problems (especially up till red difficulty) require one or two "aha" moments at most to get full score. IOI-style problems often require an "aha" for each subtask and there is often 5+ of them. You want to train your brain to fully immerse itself in a single task for very long time.
Strategy is also very different, which is why you should do virtual competitions as well. You need to figure out what works best for you so that you can spend a significant amount of time purely thinking about the full solutions, but also leaving sufficient time to get all partial scores that are within your ability. You should also figure out your own internal cues of when's a good time to jump to another problem and when's a good time to continue pushing. This is not something you've trained a lot because CF gives you the difficulty in advance and the solving order is presumed.
This is a great summary of the differences between OI and CF training. One thing I would like to add is that is seems there might be a mental blockade as well for OP ("but I couldn’t shake the feeling that I wouldn't be able to solve them"). I've experienced this quite often back when I was competing more, it's a positive feedback loop:
And like that in an endless loop :)
I can recommend two things for this: 1) always work on your weaknesses. Never just give up and say "Yeah, I'm just naturally bad at that". They are weaknesses because there's room to improve 2) Try doing OI with people who are better than you at OIs (if not in person, at least online at the same time). Ask them about their strategy, how much did they spend on each task, and so on.
Obviously you're very talented and have worked hard considering your progress so far — some things just take more time :)
P.S. And yeah, it's normal to spend multiple days on a single OI task. It took me 4 years to solve IOI 2017 Wiring :) (just don't do that for most tasks)
Funnily enough 2017 Wiring is often my go-to example for a task that just keeps on giving new observations the more time you put in it. It is the most enjoyable task for me from the IOIs I've been to.
Funny enough 2017 Wiring is from now on my go-to example for a task that can be somewhat trivialized by ICPC knowledge. If you look at the problem as min cost matching then it's clear how to write a quadratic dp in some ways, then it's surprisingly solveable by simply spamming slope trick if you look at it in a certain way.
I don't think I'm particularly qualified (solved 3 plat problems this past USACO cycle) but I feel like the utilization of subtasks is a big component of OI even in the context of trying to AC a problem. Many full solves happen by thinking about how to move from one subtask to the next, or how to piece multiple subtasks together, or above all, why a subtask exists.
Some examples:
CNOI 2022 #5 — combining observations from all 3 "special properties"
USACO Jan 22 #2 — main observation is motivated through subtask 4
After reading the comments, I decided:
I will stop participating in a CodeForces round until november.
I will participate in ARC if I'm available.
I will solve at least one OI set a week.
I should learn some algorithms such as 2D segment trees, 2 sat, dp optimizations... but I will try to study them later when I get hit by an OI problem that requires an algorithm I don't know. For now, solving problem looks way more important.