fried-chicken's blog

By fried-chicken, history, 4 years ago, In English

Recently, I noted a funny thing about various views on codeforces’ problem.

In China, majority of competitive programmers described codeforces like “a good website for practicing your thinking” and “ advanced algorithms and data structure not necessarily required” (especially common in participants of Informatics Olympic).

At the same time, I saw some on codeforces said that codeforces’ problem have too much certain algorithms and data structure.

One possible reason for this may be that we(Chinese) consider the data structure vital and train mostly by some data structure problems .

So,what’s your point on codeforces’ problem? Further more, what do you think about the problems based on thinking and observation? What do you think about the problems based on a certain advanced algorithm or data structure?

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

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

I think due to the nature of the contests where you have many problems in a short time span, some thinking problems are good. However, I feel codeforces has far too little data structure problems, and especially with those being my personal favorite (if the data structure is new or interesting modification, not straight up standard application), I wish at least on the higher level problems for their to be more so.

Also I'm curious where do Chinese get these data structure problems? Just doing OI problems or a specific OJ?

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

    Well, to be honest, programmers who really proficient in DS in China are mostly start CP in their senior high (because in China, OI needs more DS than icpc and therefore those who have prepared OI may have a higher DS level), and I know CP from my university, so I can't ensure what I said below accurate.

    Firstly, there is certainly not something like "DS problems all in one" OJ in china lol

    Then, I'd like to explain why there are so many DS problems in China. One reason is that there is something like "DS atmosphere" in China, so everything may have something to do with DS. And, there are some OJ give their user permission to add their own problems (need to be verified by admin) in OJ, and coincidentally there are many top CPer in China is able to and is willing to contribute some brilliant problems to it. So, such problems get more and more in China. And then, some "semi-top" coder may make some problems based on that problems(problems by top coder). Hence, problems getting more and more in chinese OJ.

    One example may be ODT(old driver tree) problems, it firstly appeared in CF449C by a famous CPer in China. If you have known ODT before, you may realize that ODT sounds lack extendibility. However, many chinese CPers then did some interesting thing about it. For example, the found some problems in CF can be passed by it(like CF343D and CF915E) and even some problems in NOIP/NOI(China's OI competetion) before can be passed with it (Since problem maker at that time certainly don't know ODT at all).

    So, top CPers create, then semi-top coder follows. Maybe that's how DS in China get more and more complicated.

    And you can find this problem on some OJ like luogu OJ or LOJ. And you can search "模板"(template) to get template problems for some DS or algorithm (In LOJ, you should use "模板" for tag instead of search). Unfortunately, most, if not all, of them are in Chinese :(

    Hope my poor english didn't constraint my expression.

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

I believe that on an average, the distribution of questions between thinking vs implementation/DS is fairly balanced on Codeforces, with sites like AtCoder being more on the thinking side and CodeChef/Chinese OJs being on the DS side.

Personally, I believe that a data structure should only be a part of the problem if it's not obvious or straightforward.

My order: Thinking >> Data Structures >> Observation (Pattern based questions)

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

    You separated the observation problmes from thinking ones, and I think that make sense.

    However, I think some pattern problems belong to not observation but thinking, since this problem's pattern may be discovered by thinking and retuction of some properties.

    So, maybe the real difference of thinking ones and observation ones is that, in terms of observation ones you don't know why it work even after you get it passed (example for such an observation one) , while the thinking ones are not the same.

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

I think problems are now less focused on DS because DS is now a standard for everyone even specialists. Meanwhile greedy and constructive problems are less introduced in classes but still require decent level to solve. And personally I believe that problems based on thinking and observation are more beneficial for your mindset as for the last 2 weeks I practiced mostly greedy problems and the result was great.