Is it just me, or have recent Div. 2 / Div. 3 contests become almost entirely constructive algorithms and ad-hoc math?
Look at the recent B, C, and D problems — virtually zero standard DP, graphs, or classic data structures. It’s usually just "stare at the statement for 20 minutes, spot the weird mathematical trick, write 5 lines of code". If you spot the trick instantly, you get a massive +delta. If not, you get stuck on Problem B for an hour, even if you know advanced CS inside out.
I get why problem setters are doing this. It stops people from mindlessly pasting Segment Tree templates, it lowers the barrier for beginners, and it makes life harder for ChatGPT/Claude cheaters.
But the variance on these ad-hoc tasks is insane. Sometimes it feels like CF is losing its algorithmic soul compared to platforms like AtCoder, which still feel much cleaner and more structure-oriented.
Not saying constructive problems are inherently bad, but the current balance feels a bit off. Would you guys prefer a return to more standard DS/DP in Div. 2/3, or do you actually enjoy this meta?








Either it gets reversed or we adapt , to spotting these weird things, you can't say the same if ICPC or some major competition set their major set of problems on that specific year as ad hoc . We better get adapted to this
Or you just skip B entirely and go to C
Definitelly! But, i think it would be better, if there was, maybe, one data-structure problem. At least at D.
yeah man, agreed to what you say, just these ad hoc's won't teach you any algos or ds, I'd like it if it were kind of alternating, where one round is ad hoc oriented, other is ds or algo oriented
definitely!
I don't think this is true. Almost every recent problem has a proper chain of reasoning and observations to get to the final solution. That being said, yeah I think there has been a slight decline in the number of dp, graph, and other DS problems (atleast at the rating levels at which I can solve problems) and would like to see some more of them
I agree that good constructive problems have a clean chain of observations. But when a Div. 3 Problem B requires finding 3 specific non-obvious observations in 15 minutes, it stops being about deep thinking and turns into a speedrun of 'guess the pattern'.
If a div 3 b problem requires 3 specific non obvious observations, its not necessarily a bad problem but I would argue its more misplaced. Additionally the extent to which something is obvious can greatly vary from person to person. Also at the end of the day, codeforces has to be somewhat of a "speedrun of guess the pattern". I say this because firstly codeforces has to cater to several skill levels meaning big range in difficulty of problems combined with some easy some hard problems stuffed into a shorter time frame compared to OIs where you can have 5 hours to think about only 3 problems of roughly (sometimes) equal difficulty, I don't think its bad but just something you have to accept as a nature of the format of platform
I actually like this new type of problem, but I agree that it should be more balanced.
although i think that combinatorial optimization problems/greedy algorithm are wasted in a sense by not having to prove the result (i.e. you can just assume greedy works and 1/2 the time you are done)
show at least one div3 problem which uses "weird" math trick, id argue there are none, maybe they are weird for you because you are not aware but all that appears in div3 is rather standard stuff and well, you should learn it
Codeforces Round 1114 (Div. 3). Especially B. It's Ad-Hoc, not math. But it's weird, and that's why i made this blog.
B? In what way is B ad-hoc or weird?
For me it's weird + ad-hoc.
Problems involving considering the block structure of a string or array appear every few contests; this is extremely common. Removing a character from a string is also a very common operation, and it's very natural to consider how block structure changes when you remove a character. If anything, I would call this problem far more standard than ad-hoc.
For CM, it's common. For Div. 3 participants, it's hell.
Maybe you're right that it's hard for some Div. 3 participants. That's how it should be; problems aren't supposed to be easy. That doesn't change the fact that every idea used in this problem is something I've seen many times before in <=cyan rated problems. By definition, it's a standard problem. If you haven't seen it before, that's simply because you haven't practiced enough to encounter these standard ideas.
Maybe true. I solved < 1000 problems, and 1/3 of them 800*. But, it's still hard ad-hoc, especially for Div. 3 B.
It's definitely not ad-hoc, and based on the solve rates it's estimated to be 800, so it seems to be quite normal difficulty for its position as well.
Just including my 2 cents here: I think while the statement may sound unique, the reasoning is fairly straightforward: try removing every character, then realize it only makes a difference if you remove a single character, and also get a bonus -1 if the two surrounding blocks merge.
I get what you're complaining about in this blog but I think this isn't a good example. When you see the problem you should immediately notice that deleting a character in a block of two or greater doesn't affect the answer because it would get deleted when computing $$$|f(s)|$$$ anyways. Then, to see how deleting a character in a block of one affects the answer, you will look at the local changes (characters to the left and right) which would give you two cases to consider and lead to the solution. I think thats a very reasonable chain of logic to get to the answer. I think a better example would be a constructive though these have always been common in.
You can solve that problem using DP.
DP... in Div. 3 B :sob:
My point is that perhaps those problems aren't necessarily ad-hoc, they're just easy so you have multiple ways of solving them including ways that are classic.
Agreed, got my Expert after trying for a long time by applying a 2-sat solver to a problem for Christ sake, I thought that day would never come. Classic algorithms and data structures could be more frequent in problems for lower rating participants, it would make the contests a little more enjoyable for me at least
For Chinese OIers, there are already too many DS/DP problems on various platforms. For this reason, ARC/CF Div.2,for us, are excellent opportunities to exercise our thinking skills.
I don't want to stay up late until the next day just to do some DS. Why not do the ynoi problems?
This is interesting! I'm right now want to find good DS problems XD. But you tired from them. Okay, i will definetely check ynoi.
No its not makes life harder for cheaters but makes life harder for honest participants
Actually, 2000* ad-hoc problems way harder to GPT to solve it. But 2500* DS for GPT easy problem.
You can check it yourself.
I think way harder its maybe just additional 2-3 queries to Chatgpt like "your code gives wrong answer"
It's not harder? Like instead of just "Give me this code", you need to check, why and in which case GPT-code wrong.
Yes it's not harder. You don't need to check why and in which case GPT-s code wrong: 1) If you get WA#1 (Sample test) you just go to "My submissions" and copy and paste checker's log to GPT or if you stupid just say wa#1 copy and paste sample test case and GPT itself fixed it 2) If you get WA on other cases you just say re review your solution it gives wa 3) I dont think now GPT cannot solve problem in one try if you give statement of problem with sample test cases. And what I try to say ad hoc problems only ruins honest participants results and it's not so difficult for cheaters
But you do something instead:
Hello, give me the sol for this prob in C++.
It's not too hard for cheater. You just need more effort to solve it with AI. But yes. Right now, AI evolved a lot.
There is no anything bad at adhocks and math UNTIL there is exist clear idea that you can proof during a contest, and you don't need to just guess and believe. Also that point is about editorials — often it just suggests to believe
"zero standard DP, graphs, or classic data structures" wouldn't these be boring over time? that's exactly what old F div 3 was (it's equivalent to G today since there's no G.) You see when opening an F div 3 and it's almost always going to be DP, is it boring? Now the "modern" one seems to be more diverse with many "constructive" problems and less standard ones, but imagine the dread when one opens an F/G div 3 and saw a constructive problem. I'd take a classic data structures problem any day. (of course these were probably extremely easy given that they need to be in the div 3), but then, last round's D2E it was also ad-hoc math if you didnt take the dp route. the sequence has a pattern.
it's almost as if "dp" and "math/ad-hoc" intersects somewhat. you can even see this at div2 E/F.
I meant that there are so much ad-hoc and math, and zero DS.
The most realest opinion i've heard in a while.
I dont fully disagree, but at the same time, dont fully agree? Recently, there were some great ds/implementation problems as well (the recent odd diameter tree problem in the last edu round or two great segment tree problems (1111D2, 1112E) or the topo sort problem). Ofcourse, they were first observation then ds problems, but you can say that for every problem. But, I mostly share the same sentiment, that we are seeing a lot of observation problems. But I am not complaining. Most of the initial icpc prelims/regionals problems (atleast in my country) are adhoc heavy (and we missed out last year because of one stupid adhoc) and there are so many great old problems for ds.
zeyd1234 has never done AtCoder
I actually like these kinds of problems. For me, the best part of competitive programming is when a problem rewards you for noticing something clever or approaching it from an unexpected angle.
I like problems that test how well a competitor can think and discover ideas, rather than simply testing who has learned more algorithms or data structures. Of course, I don't think every contest should be purely ad-hoc — some balance would be nice — but I definitely enjoy problems where the main challenge is the thinking itself.
Some obvious statements that somehow no one has mentioned in this thread yet (I normally wouldn't bother, but this seems like a vaguely popular post).
Competitive programming in general has always been somewhat mathematical. Computer science in general is largely a field of math! And indeed, even in old codeforces, you will see a fair amount of ad hoc, constructive, etc.
It is true that in recent years, Codeforces has leaned into the mathematical aspect of competitive programming. It (I believe) shifted so strongly because for a period of time, that is what the coordinators/setters enjoyed the most. And yes, before seeing algorithm tests in contests nowadays, you will often see a few purely mathematical questions that require little to no algorithm knowledge. But there's no innate problem with that. It just needs to be understood that Codeforces is not strictly a programming/implementation competition. It is also in part a math competition. And to follow, at the end of the day, Codeforces is just its own platform with its own style. It doesn't have an obligation to represent something outside that. If you don't like this style, you instead can do Informatics Olympiads, ICPC, or even LeetCode. And you will get a different experience out of doing each.
Faulting codeforces for its abundance of ad hoc and math and then saying it should instead be more like atcoder is a bit comical. Have you seen ARC and AGC? They lean even more heavily into the math than codeforces! Atcoder contests are probably the closest thing to a math competition you'll find in competitive programming. Maybe you're just basing your opinion on ABC, idk. The reason why ABC is different is that it is deliberately meant for beginners, and sets questions specifically to teach you about algorithms. It is not the core of the website.
Oh... i understand. Yes, i never participated in ARC or AGC. And my opinion based on ABC.
that's all ai
I write my thougths in my language. Then translated to english... by AI.