deque's blog

By deque, history, 5 years ago, In English

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.

  • Vote: I like it
  • +585
  • Vote: I do not like it

| Write comment?
»
5 years ago, # |
  Vote: I like it +149 Vote: I do not like it

Just to cite an example, Japanese OJ AtCoder does pretty well in delivering clear and concise problem definitions.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it -83 Vote: I do not like it

    CF is getting worse everyday...

    It's time for Atcoder to take over the competition.

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it +55 Vote: I do not like it

      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.

»
5 years ago, # |
  Vote: I like it +122 Vote: I do not like it

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).

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +24 Vote: I do not like it

    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.

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it -49 Vote: I do not like it

      And you think you are high level contestant just by being blue and having similar profile pic as of mifafaovo

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it +28 Vote: I do not like it

        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.

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
            Vote: I like it -22 Vote: I do not like it

          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

          • »
            »
            »
            »
            »
            »
            5 years ago, # ^ |
              Vote: I like it +23 Vote: I do not like it

            OK then

          • »
            »
            »
            »
            »
            »
            5 years ago, # ^ |
              Vote: I like it +12 Vote: I do not like it

            Wow! Now I really want to know who's the great coder behind the alt kingkong1.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +23 Vote: I do not like it

    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.

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

For me friendly statements adds positivity to the problem

  • »
    »
    5 years ago, # ^ |
    Rev. 3   Vote: I like it +46 Vote: I do not like it

    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.

»
5 years ago, # |
  Vote: I like it +9 Vote: I do not like it

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.

»
5 years ago, # |
  Vote: I like it +10 Vote: I do not like it

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.

»
5 years ago, # |
  Vote: I like it +6 Vote: I do not like it

I do agree. Some vague stories changes the whole context of the problem, and it become understandable after reading it twice or thrice.

»
5 years ago, # |
  Vote: I like it +4 Vote: I do not like it

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

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

I am a big fan of you!

»
5 years ago, # |
  Vote: I like it +12 Vote: I do not like it

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.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +82 Vote: I do not like it

    "I think we should just agree that my opinion is the correct one, instead of discussing."

    • »
      »
      »
      5 years ago, # ^ |
      Rev. 2   Vote: I like it +20 Vote: I do not like it

      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.

»
5 years ago, # |
  Vote: I like it +25 Vote: I do not like it

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.

»
5 years ago, # |
  Vote: I like it -16 Vote: I do not like it

I think they did that because they want us to be fast reader !!!

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +3 Vote: I do not like it

    Then why don't we just go to some other competitive reading website.

»
5 years ago, # |
  Vote: I like it +17 Vote: I do not like it

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.)

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +22 Vote: I do not like it

    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.

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      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.

»
5 years ago, # |
Rev. 2   Vote: I like it -8 Vote: I do not like it

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.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it +24 Vote: I do not like it

    As far as I know, in uni papers, there is no story about a 5-year old getting a string for its birthday.

»
5 years ago, # |
  Vote: I like it +18 Vote: I do not like it

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.

  • »
    »
    5 years ago, # ^ |
    Rev. 5   Vote: I like it -28 Vote: I do not like it

    OK

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it +8 Vote: I do not like it

      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.

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it -16 Vote: I do not like it

        He is referring to Chan which is a common "Chinese" last name.

        Maybe you are being racist ?

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
          Rev. 2   Vote: I like it +13 Vote: I do not like it

          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.

          • »
            »
            »
            »
            »
            »
            5 years ago, # ^ |
            Rev. 2   Vote: I like it 0 Vote: I do not like it

            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)

            • »
              »
              »
              »
              »
              »
              »
              5 years ago, # ^ |
                Vote: I like it 0 Vote: I do not like it

              Google some guy named Jackie Chan

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

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.

»
5 years ago, # |
Rev. 6   Vote: I like it +40 Vote: I do not like it

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.

  • »
    »
    5 years ago, # ^ |
    Rev. 2   Vote: I like it +8 Vote: I do not like it

    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?

»
5 years ago, # |
Rev. 2   Vote: I like it +8 Vote: I do not like it

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.

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thank you! Glad that my blog is making a difference!

»
5 years ago, # |
  Vote: I like it +3 Vote: I do not like it

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.

»
5 years ago, # |
Rev. 2   Vote: I like it -10 Vote: I do not like it

Yeah, PLEASE STOP WRITING BS LEGENDS. Those don't make problems look cooler.

»
5 years ago, # |
  Vote: I like it +8 Vote: I do not like it

But, i think these types of problems increases our understanding skills , in ICPC too, long statements are given .

Having story is a good thing .

»
5 years ago, # |
Rev. 3   Vote: I like it 0 Vote: I do not like it

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 -

  1. CF round 635

  2. 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.