Блог пользователя PeterASteele

Автор PeterASteele, история, 8 лет назад, По-английски

I greatly enjoy solving problems on codeforces in preparation for ICPC contests. The codeforces rating system is fun, and at Virginia Tech, we have a website that uses the codeforces API to rank members of our team. I say this to establish how much I enjoy training on the codeforces platform, and that I do not mean to insult Mike or the codeforces team.

At the bottom of Div1 there is a frustrating phenomenon: If a user does not submit, rating is not computed. At first thought, this seems well-intentioned. It would be quite unfortunate for a user to register and forget, and lose rank as a result. But the side effects of this are too great. The side effect is that if you do not solve problem A quickly, it is better not to submit. Over 1/3rd of the people who register take advantage of this during contest, and it is quite frustrating for low div1 members.

This effect was quite pronounced this last contest, and out of 650+ people registering, only 391 made a submit. Of those people, nearly all made a submit early on the first problem. The ELO system continues to work, but only among people who already think they have a good chance at doing well.

This last contest, 370 people out of 391 solved problem A and problem B. Only 2 people failed to solve both A and B problems. This is not because A and B were trivial; they were not (see div2 results for the same problem). As a result of so many people leaving the contest, it makes it extremely hard to maintain a rank without leaving during your own bad contests. As more people do this, it snowballs. It becomes more and more punishing NOT to leave the contest if you don't have a perfect start.

The fix is simple: Make people lose rank if they register and do not submit. Late registration has a delay for submits, but this could be increased to ~30 minutes to reduce the chances of people abusing late registration to jump in the contest if they like the first problem.

  • Проголосовать: нравится
  • +97
  • Проголосовать: не нравится

»
8 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by PeterASteele (previous revision, new revision, compare).

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +54 Проголосовать: не нравится

    I've seen many blogs like this before, and one proposal I always liked was to have a free 100 point problem (just click a button and get AC) that decays quickly.

    Contestants rated around the division boundary will always be frustrated since their overall score is heavily dependent on how quickly they solve A. Back when the division boundary was 1700, a lot of 1750s were complaining too. Keep practicing! Once you have the ability to solve Bs and Cs, it no longer matters that a bunch of coders solved A slightly faster than you.

    At the end of the day, rating is just a number. If I participated only when I solved C first (and you only participated only when you solved B first), I'm sure we'd both be much higher rated. But personally, it's not worth 100 rating points to me if I missed out on the fun.

»
8 лет назад, # |
Rev. 5   Проголосовать: нравится -22 Проголосовать: не нравится

I think it's a great idea, and should even be done for Division 2 as well.

But making the contest rated for a user who only registers will be very harsh for top ranked guys. Some guys in top 10 place like top 15 and yet lose 100+ points. Imagine if these place last. All people can forget or have something pop up suddenly, and the penalty here will be very harsh. While for guys who abuse it on purpose it won't be much as I assume they won't have that high rank if they need such strategy. I know TC uses something similar, but it requires you to open a problem not just register.

I think it's best is a penalty of like 40-60 points if applied if you miss 2-3 contests. While this punishes people who do this on purpose, it's still okay for those who forget/have an exuse.

»
8 лет назад, # |
  Проголосовать: нравится +92 Проголосовать: не нравится

Wouldn't it be better to make them lose rating if they enter the contest area? That way people that register and then find out they can't compete don't suffer but if they've entered the contest then they're considered a part of the standings.

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится

    Someone can open problems without login (i.g. using two browsers), then if the first problem was simple, he logins with his main account and submit it.

    • »
      »
      »
      8 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +36 Проголосовать: не нравится

      It would make sense to don't show problems during the contest to those who're not logged in and to those who're not registered yet (because those problems are not for them :) )

»
8 лет назад, # |
  Проголосовать: нравится +77 Проголосовать: не нравится

Over 1/3rd of the people who register take advantage of this during contest, and it is quite frustrating for low div1 members.

Over 1/3rd of registered didn't make a submit and you don't know how many entered a contest. My guess is that there are more (or much more) people who couldn't participate than those who give up at the beginning.

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +14 Проголосовать: не нравится

    I agree that 1/3rd is an upper bound, and I would be interested to see the number that entered the contest. Even if only 50 people are using this each time, that makes it very much tougher to stay in div1 in the 1900-1950 range, as at that rank every div1 person you can beat counts a large amount. Look at many low candidate master graphs, and often there is a period where people lose div1, enter div1, lose div1, enter div1. It is much easier to qualify for Div1 than it is to stay in low-Div1 for an extended period of time.

    It also has an unfortunate effect on schools who use CF ranking as a factor in making ICPC teams. In the long run, it helps to do every contest to improve. But in the short run, if the teams are being made within a month, it would be foolish to stay in a contest where you got a bad start. And the team as a whole suffers as a result (since half the members are skipping contests that would be good training).

    • »
      »
      »
      8 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +14 Проголосовать: не нравится

      I agree that it isn't cool and it makes it harder for fair users but you will never completely eliminate cheating in online contests. Restricting access or checking who entered the contest isn't perfect either because people can have fake accounts. Declaring your participation before a contest is stupid. I don't see other options.

      In my opinion this whole thing isn't a big issue. And as you said, in a long run you will be better because you competed in more contests so you fought and trained more. Maybe what should be changed is the system of creating teams in schools that currently sort students by CF rating.

      • »
        »
        »
        »
        8 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится

        What is registration if not declaring your participation before a contest?

        I agree it is not a huge deal, especially outside the very bottom of Div1.

        • »
          »
          »
          »
          »
          8 лет назад, # ^ |
            Проголосовать: нравится +19 Проголосовать: не нравится

          It happened to me that I registered but didn't participate. I wouldn't want to get my rating decreased hugely because of that.

          • »
            »
            »
            »
            »
            »
            8 лет назад, # ^ |
            Rev. 2   Проголосовать: нравится -13 Проголосовать: не нравится

            The solution to this is to avoid registration until 10 minutes before the contest, if you cannot be sure to participate.

            • »
              »
              »
              »
              »
              »
              »
              8 лет назад, # ^ |
                Проголосовать: нравится +20 Проголосовать: не нравится

              I register in advance because there is a tendency to forget to register until the last moment, and then not be able to compete (happened to me once, and was very irritating). I suspect it is the same for many others.

  • »
    »
    8 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится +14 Проголосовать: не нравится

    Three years ago, I made an analysis about how many of registered participants visited the site.
    Brief: 15% — 29% of round registrants, do not make any submits, but visit the site and probably read the problem statements.

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится -10 Проголосовать: не нравится

    Then it would be better to open registration right before the contest, i.e 3 hours, and apply the suggested rule

  • »
    »
    8 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    Looking at DmitriyH's blog post may shed light on how many were online during the contest but did not submit. 26%, 29%, and 15% are not small number of contestants that are using this tactic. (Not all 1/3rd, but a sizable portion)

    http://codeforces.net/blog/entry/12231

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится +18 Проголосовать: не нравится

      I agree that these are quite big numbers to be honest. I've also always found it weird that let's say a Div 1 is especially hard, and some of the weakest Div 1 participants can't solve problem A, they can sit for an hour or two and try to solve it, 100% honestly, they just simply don't at any point have the illusion that they solved it and therefore have no reason to submit anything. These participants might even believe it is fair that they lose rating as they "participated" in the contest and did their best, but they won't even be counted as participating.

      I feel like it's an easy fix to hide problem descriptions for everyone that isn't registered and tag someone as "competing" and add them to the rankings with 0 points until they solve something as soon as they actually enter the contest. There can be a warning or something before you enter saying "if you enter now you will be counted as competing, okay?" or something along those lines.

      It should be quite quick to implement. And of course people can still cheat, and as Errichto says people will always cheat in Online Competitions, but at least make it a bit harder, and I don't feel like this approach would hurt anyone playing fair. And I would feel really weird if it was me that had sat for hours "participating" and then I wasn't even counted as competing just because I couldn't solve the problem, I should have 0 points then, I shouldn't have to purposefully submit a wrong solution to show I competed.

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится +43 Проголосовать: не нравится

Just make easy problem A. Then everyone who is going to take part, will take part. Other ways will lead to cheating because of fake accounts for reading problems.

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

    Isn't it easy enough already? Cf is much friendlier to div1 newcomers compared to topcoder e.g. It's nearly impossible to reach div1 without solving any div2c quickly anyway.

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      So, it's not profitable to submit DIV1-A if you was unable to prepare it's solution in a first 5 minutes.
      In order to participate, you should have at least a solution for B to be strongly confident in.

      • »
        »
        »
        »
        8 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        But you are not the only one who isn't confident on own level. It's you and couple of dozens users of same abilities, so there is always a chance.

        Thus this branch of discussion turns to complains about problems of cf scoring system. And there is no difference between div1 and div2 one.

    • »
      »
      »
      8 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

      Yesterday's Div 1 A was easy. I was registered, but I had some another business. If I had participated, I'd solved it (tried, at least).

      Sometimes it's not easy enough. At some rounds 2-3 years ago I couldn't solve anything.

      BTW, I think TC-D1-250 are easier than CF-D1-A, at least I have much greater winrate on them.

      • »
        »
        »
        »
        8 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        I haven't seen non-solvable for me div1a for a long time. Maybe problemsetters adapted to real level of purples.

        I've competed in only 3 srms in div1 but still don't have any solved problem. 2/3 rounds I even went up in rating. So I don't see why it can be easier.

    • »
      »
      »
      8 лет назад, # ^ |
        Проголосовать: нравится +6 Проголосовать: не нравится

      I disagree. Solving Div 2 500 with decent speed is enough to reach div1 on topcoder and it's easier to remain in Div 1 on topcoder because once you open problem, round will be rated for you and sometimes even yellow/red coders are unable to solve div1 300 which many times results in positive rating for people with ~1200 rating even after getting 0 points!

      • »
        »
        »
        »
        8 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

        It is easy to remain in div1, I agree. I am one of those people who solve nothing and have rating increased (1282 -> 1308 with 0 points and 1308 -> 1344 with 25 points). But I personally don't enjoy participating in srms. I would prefer to solve at least one problem and have rating drop to solve nothing and go higher.

        I am not sure about noun form of "demoralize" verb but that's what I feel after every srm I participate :)

»
8 лет назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится

Strongly agree with you.
The only possible solution — force push any registered for round user into final standings.
And do not register for round, if you are not sure about participation.

TC's rules are much more fair in case of difficult first problem.

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

I am CP newbie that sometimes can't even submit an easy Div 2 A in many contests. I agree that people like me who enter contests but can't get a solution for anything should have a ratings drop.

»
8 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

I'll suggest a little rating loss for those who don't submit (like 10 rating points or 5% of the rating loss if you submitted and can't solve any problem), so people will think twice before register.

It won't do too much harm if you really can't participate or decide not to participate after seeing problems, but also it's not worthy to create a second account just to avoid it.

»
6 лет назад, # |
Rev. 2   Проголосовать: нравится -27 Проголосовать: не нравится

I suggest opening the registration 10 or 5 minutes before the contest starts. And whoever is registered is supposed to be participating in the contest even if he/she didn't solve any problem.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится -13 Проголосовать: не нравится

    the entire point of registration is so they can figure out how many servers to buy before contest, they could not do that if everyone did that instantly before contest