Hi Codeforces,
First I want to say that I'm genuinely grateful for all the problemsetters being willing to provide us with interesting problems and contribute to the community of competitive programming. But there's some thing I have to say.The following are my personal opinions.
Please! Reduce the amount of background stories for the problems!
I understand that some writers of contests might want to add some humor to the problems, have a theme for a problemset, or add some of their favorite anime characters' or friends' name to the problem statements to make the problems more memorable. But to be honest, I think some of these efforts are getting out of control. At least I personally feel that extended and unnecessary "stories" make it harder for me to understand what the problem wants me to do. And frankly, some of the stories don't even make sense.
For example, in the recent Round 645 Problem C, some background stories are completely unrelated to the problem:
"During the quarantine, Sicromoft has more free time to create the new functions in "Celex-2021". The developers made a new function GAZ-GIZ," "The developers of the SUM function don't sleep either. Because of the boredom, they teamed up with the developers of the RAND function,"
How are these clearly made-up things related to the problem and what do they even mean...
For another example, in EDU84, Problem B, an extremely simple and straightforward problem structure was wrapped under a story with supposedly funny names like "Polycarp LXXXIV", making the reading very time-consuming. In his live stream of the contest on Bilibili, jqdai0815 expressed his reluctance to read the problem and decided to come back to it later as soon as he saw the long description. This kind of unnecessary statements disrupt the focus and flow of even one of the best competitive programmers! It's nothing but distractions.
An earlier example of super straightforward concepts deliberately misted by stories in the description. Round 346 (Div. 2) B
To put it with painful honesty, most contestants, at least the ones I know, do not relish the little stories that writers add to the problems and they don't find them funny or mind-refreshing. What gives them joy is the process of dissecting the abstract structures of a problem and finding a way to solve it. It's frustrating to spend 5 minutes reading a problem and find out that it's describing something trivial. So I'm suggesting that contest writers to please reduce the amount of real-world context that comes with the problem. If we have to find a shortest path, then let's find a shortest path. It doesn't have to be because "Polycarp is a very smart man and he doesn't want to waste so much time on the road so that he can spend more time solving Codeforces problems with his friend and get more AC's. "
If the writers have to add something to the problem, at least separate the story from the problem with stickers or some other stuff, like in Round 635. So that those who really want to read it can spend time reading it.
Some good example of concise problem statements without too much background stories or no background stories at all:
Round 643(Div. 2) C Round 642(Div. 3) D Round 639 (Div. 2) C Round 629 (Div. 3) F
Again, this is just a kind advise. I want to again say thank u to all the people who have written contests. Your efforts and contributions are what make this community thrive.
Just to cite an example, Japanese OJ AtCoder does pretty well in delivering clear and concise problem definitions.
CF is getting worse everyday...
It's time for Atcoder to take over the competition.
Atcoder is a good platform, but it will never replace cf, at least not for a long time. Cf is more than a contest platform, it has a community and many of the best blog resources for learning cp stuff available, not to mention it is the largest contest platform which makes it most fun to compete in because you feel like you're going against the whole world, so it's a cycle that feeds onto itself.
Also atcoder rating system increases way to slowly when u start which makes it suck at the beginning, and they have almost no mid-level contests, only rlly easy or rlly hard, both of which are boring for me during contests.While I agree with the general idea of the post, I would like to say a few words why ER84 B (which you mentioned as one with unnecessary long legend) has this kind of statement.
Initially, the problem was formulated as follows: given a bipartite graph, add one edge in such a way that the number of edges in greedy matching is greater than it was initially.
While this could be a good statement for some harder problem or harder contest (after explaining what a greedy matching is, of course), the first problems of ER are mainly suited for those who might be unfamiliar with complex topics, such as graph theory. We tried to make a statement without using the words "bipartite" and "graph". So one of the ideas we had was to introduce a legend, and I think that we didn't have anything better (and I still don't know how to formulate this problem without graphs).
Yea, I agree that might be more friendly for beginners. But it's true that reading will be a not so pleasant experience for intermediate or high level contestants.
And you think you are high level contestant just by being blue and having similar profile pic as of mifafaovo
I never said that I'm a high level contestant. I'm probably not even intermediate. But perhaps just slightly more experienced than someone who got Compilation Error for forgetting using namespace std; on A+B problem.
That was because you have to make one submission to write a comment so in hurry i made a wrong submission. By the way you are not of my near standard whom I should bother to reply
OK then
Wow! Now I really want to know who's the great coder behind the alt kingkong1.
I read the problem and the idea behind it is indeed good, it is not overly complicated. I suppose that the statement could be shorter though by avoiding phrases like
"To establish his power to the neighbouring kingdoms he wants to marry his daughters to the princes of these kingdoms. As a lucky coincidence there are n other kingdoms as well."
It is not needed to justify why the king wants to marry his daughters. One could also avoid saying that the fact that there are n other kingdoms is a lucky coincidence.
Also the phrase: "Unfortunately, what he doesn't have the time for is determining what entry to add." is also avoidable, but overall the statement is not bad imo.
For me friendly statements adds positivity to the problem
Yes, I understand. However, notice that "friendly statement" and "statement with excessive context" are two different things. Being concise and right to the point doesn't necessarily mean unfriendly.
Indeed, while I truly appreciate problem writer's efforts in writing interesting problem statements, sometimes they are a bit too long to read, especially for non Russian or English speakers.
That's right.
That's what have been on my mind for a long time :D. I am glad that someone brings this up. Yet I do acknowledge author's endeavor behind those "long" problem statements.
Yes lol
I do agree. Some vague stories changes the whole context of the problem, and it become understandable after reading it twice or thrice.
Also, please if possible separate the definitions of the technical terms used in problems from the actual problem statement so somebody who knows the obvious definitions can straightaway work on the problem, for example, consider this problem it's just a one-line statement but definitions make it a little longer to read. It's not that much of a problem though but yeah just a suggestion
Exactly
I am a big fan of you!
I think we should just agree that Atcoder is the gold standard in that regard and try to stick to that style as much as possible, instead of discussing what amount is appropriate/adequate.
"I think we should just agree that my opinion is the correct one, instead of discussing."
Well, that's the most efficient form of debate.
Although I think you're right my comment was too straightforward, what I meant was that maybe we should consider deviations from Atcoder model instead of deviations from the Codeforces model if that makes sens.
As long as the main part of the legends are obviously distinguishable from the main statement, I like them quite a lot. They are a nuisance during contest if you can't skip them, but during practice every once in a while a good legend makes me laugh or helps solving problem after problem not seem so monotonous, so I hope people will still make them, just hopefully not where they disrupt the contest.
I think they did that because they want us to be fast reader !!!
Then why don't we just go to some other competitive reading website.
Reading problems concisely is also an important ability for contestants. It should be trained. If you only solve problems with "strict mathematical definition" in training, that will be your undoing in important contests (ICPC regionals, etc.)
Your point is irrelevant here. Codeforces have a different format and a different mentality. For instance, it's less oriented towards implementations or application of advanced algorithms than ICPC.
If you want to train for specific skills of ICPC regionals, go solve ICPC problems.
Well my point originates from some ICPC trainees who always train on Codeforces in our university. Then their skill doesn't match the requirement for ICPC. They get high ratings in Codeforces, but some "honorable mentions" in ICPC. In fact I was an typical example of this type back in 2015 :(.
I appreciate your point and I think my original point is invalid. It's impossible to make Codeforces more like ICPC, but the trainees should train for ICPC more properly. As an assistant ICPC coach I alerted "the difference between Codeforces and ICPC" yesterday in our staff meeting. We'll have to take action to make our students train in more type of contests, beside Codeforces.
I learned to just read input/output first to get a brief idea about what will be important, then go on reading the problem statement.
Reading problem statement is a good skill, Imagining you need to skim through a 10-page research paper in Uni, that is hard.
As far as I know, in uni papers, there is no story about a 5-year old getting a string for its birthday.
I for one like background stories in the problems, it makes them more fun to solve because I picture them in my head while I solve them.
Though I do agree that too long background stories are worse than no story at all.
I believe the best thing would be to give some background to the problem, in no more than a couple of lines.
OK
You know what's racist? Using the word "Chinese" as a global word for all Asian people.
Chan is a suffix used in Japan for close people or friends, who are also usually younger than the speaker (as opposed to san, which is usually used for older people).
So,the only racist thing I've read is your post saying that chan is "Chinese".
Next time, if you're going to complain, at least make sure you know what you're talking about.
He is referring to Chan which is a common "Chinese" last name.
Maybe you are being racist ?
It is not, except for a bad romanization of Chen.
Zhang, on the other hand, is a common Chinese surname.
Anyway, Chan used after a name, as a suffix, is inequivocably Japanese.
As a Chinese I m also confused about what howso said.
chan->Japanese which GF had explained And I think there is no any racist in that problem because all of the world knows chan dont mean Chen(just like my ID)
Google some guy named Jackie Chan
I agree. Many times stories have been confusing, and those extra details that are not even remotely related to the question, they are super irritating.
I agree with you. In my opinion, stories unrelated to the problem are annoying, even if they are not crazily long.
Authors must make their statements as clean and understandable as possible. Statements are meant to describe the problem in the most efficient way possible, they are not meant to amuse the reader (it is not their primary goal).
I know authors think writing stories is fun. But remember that Codeforces is not Wattpad. Please go exercise your writing skills elsewhere. For a lot of contestants, it's way better to have a clean statement than a "funny" statement. Moreover, most of the time, they are not even amusing/pleasant to read.
It's easy to determine which way is the most efficient and if the story is irrelevant if we are dealing with something like "little Vasya got an array for his birthday" or "how many hugs from Coronavirus-chan can you get". But a lot of cases are not that simple. How do we define the border between annoying legends and helpful ones? People usually have different opinions about whether the legend is confusing, according to their skill, preferences, and the reason why they participate in CF rounds. From which point of view should we consider the legends?
I think you are right, i'm about to split the stories from the statements in my contest. I try to make them even more clear just because of you.
Thank you! Glad that my blog is making a difference!
I totally agree with you, especially for a non-native English/Russian speakers. Each time I need to spend a lot of time to read unuseful information.
Yeah, PLEASE STOP WRITING BS LEGENDS. Those don't make problems look cooler.
But, i think these types of problems increases our understanding skills , in ICPC too, long statements are given .
Having story is a good thing .
Well, while I definitely agree with the idea of the post, I'd like to pick out two contests from recent memory which are probably the most ideal ways of presenting the problem statements -
CF round 635
CF round 646
Round 635 models how, even with an intriguing theme and story, was able to separate the story from the problem itself. In fact there was a clear guideline in the "Announcement" of the contest where they said they demarcated the problem and the story with the image. People who wanted the full experience could read the stories whenever. I for example read them after the contest.
And then there is Round 646, which consisted of plain vanilla problem statements which were very concise.
All I'm trying to say is this, if any future contest is modelled after either of these two, it'll be an enjoyable contest.
PS. As much as I liked the "problem" Celex update, the problem statement itself was very very confusing.