DmitriyH's blog

By DmitriyH, 11 years ago, In English

Consider the following Div. 1 rounds:

Codeforces Round 236 (Div. 1)
Codeforces Round 238 (Div. 1)
Codeforces Round 239 (Div. 1)

      Registrants Participants
#236:        1011    616 (61%)
#238:        1052    608 (58%)
#239:         774    538 (70%)

At least, 30% of registered users didn't participate in the rounds.
Do you wonder, what they really do? Do they read the problem statements or not?


Intro

It was interesting for me, and I've analyzed the following information:
- round registrants list
- last visit time of each round registrant during round (polling interval was 5 minutes)
- official participants list

In other words, ~1000 http-requests were made each 5 minutes.
Dear Codeforces, I beg your pardon, if it was to much :)
I don't plan to acquire this kind of statistics anymore.

Brief results

round userColor registrants participants neverVisited silentlyVisited
 236    red             101           69            8              24
 236    orange          268          171           34              63
 236    purple          642          376           93             173
                       1011                                  260 (26%)

 238    red              92           65           17              10
 238    orange          291          177           34              80
 238    purple          669          366           90             213
                       1052                                  303 (29%)

 239    red              82           64            9               9
 239    orange          238          165           33              40
 239    purple          458          309           78              71
                        778                                  120 (15%)
*participants — present in final standings
*neverVisited — registered, and never visited the site during the contest
*silentlyVisited — registered, made at least one visit, no submits were made						

Result: 15% — 29% of round registrants visit the site and probably read the problem statements.

Visual representation



Round 236


Round 238


Round 239


What is the conclusion?

The rules are the rules.
Any change of rules opens a loop-hole for cheating.
I see the only probable step to smooth this situation and reduce the silentlyVisited users count:

DIV1-A problem should be simple enough for every DIV1-participants, or should seem simple enough.


UPD:
Another possible solution requires Codeforces's improvements and brings a little bit of butthurt, but seems efficient:

    XX:XX:XX — 19:25:00 Registration Stage
(!) 19:25:00 — 19:29:55 Participation Confirmation Stage
    19:30:00 — YY:YY:YY Battle!
Participation is confirmed => user can submit solutions and is present in standings.
Otherwise => he can't submit anything and is not present in standings, but still can see problems.


Thank you for your attention :)

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

»
11 years ago, # |
  Vote: I like it +69 Vote: I do not like it

I believe there was quite popular tactics of "I will participate if I will solve C quickly". Making A easier would not help to counter this

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

    Thanks, it's seems risk-free tactics for the users with rating below 2200.
    Maybe, I should try it in the next round :)

    Joking apart, what do you think about UPD ?

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

      Joking? why? why do you think it is shame? It is a part of tactics and competing. I do the same — first i try to solve B.

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

        Not a shame.
        Rules are rules. Everything, that is not forbidden — the part of tactics :)

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

      I think I would be rather angry if I am late couple of seconds to confirm my participation

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

        There is also a danger to be late for the round registration. But registration is the mandatory action for the participant.
        I didn't notice a significant displeasure about round registration among the community.

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

      How about to add a button, pressing on which will give you for example 100 points at the beggining of contest, or less for each minute passed from the begining.

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

      i think it's a good idea.
      but what about participants who sometimes login about 10-15 minutes (sometimes more) after the round starts? i think we should be fair to them too, and allow them to participate if they wish! :)

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

        What about participants, who late for round registration?..

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

          Round registration is 12 hours before the contest. You can register in the morning and participate in the evening after the university or work even being late several minutes.

          Your problem is artificial and nobody really cares about those 30% silent users — it they don't want to participate it's their right and it's not your business to prevent them from rest instead of solving problems.

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

            In ideal world..

            The user, who've submitted at least one accepted solution should have a higher place, than user who've not submitted anything (provided, they both are registered for round and read the problem statements).

    • »
      »
      »
      11 years ago, # ^ |
      Rev. 3   Vote: I like it -8 Vote: I do not like it

      I think topcoder did well about what you mentioned. But I don't know whether it's right for Codeforces to follow or not.

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

        I agree with you. But it's up to Headquarters/Штаб.
        It would be interesting to listen theirs opinion about it.

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

    Now I am beginning to understand, why dynamic-scoring is so unpleasant for some people

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

I think that a good solution would be: if you read any of the problems, the contest will be rated for you.

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

    For me it's not a good solution. Sometimes I can miss the start of the round, because of some circumstances. But it's interesting to read hard problems and think about solution, without coding it. And if the round will be rated if you read some problem, then you will need to wait to the end of round, because in the other case you will definitely lose some rating points.

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

    Step1: logout your account

    Step2: read the problems

    Step3: decide whether you want to participate or not

    Step4: login again.

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

      Only showing problems to registered users during contest?

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

        It's easy to register second account.

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

    OR:
    1) Register another account
    2) Login & enter DIV.2 contest
    3) Read DIV2-C .. DIV2-E problems
    4) Decide, login main account or not

    See UPD for the possible solution, which eliminates this cheating.

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

      Maybe there are some solutions of this problem. But I now one (very very difficult solution ):

      First of all problems Div2 C,D,E should't be the same with Div1 A,B,C or Div1 rounds should be independent as Div2 ( I mean Div1 only and no Div2 contest at the same moment ). The second variant easier to realise ( IMO ).

      Second: there will not be both divisions contest.

      Third: If you registered for the contest and you have read at least one task — this contest should be rated for you ( as on TC ).

      My solution has got one problem: person may have 2 or more accounts in Div1, but I think it is very difficult to have many Div1 accounts. Thank you for attention.

»
11 years ago, # |
  Vote: I like it +14 Vote: I do not like it

Do you care that much about those who don't participate (due to any reason) that you're trying to come up with some way to struggle with them? I agree that this way they might keep their rating at a bit higher level, but honestly I don't care that much about their rating to think how to stop them from registering but not participating even if they are online.

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

And with regards to your update: what's a point of registration then? Sometimes I'm coming late for the contest and I join when it's already going for 5-10 minutes. Even in this cases sometimes I write the contest, but with that change I won't be able to so anymore.

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

    Yes. That's one of the possible coming problems.
    But, IMO, first 5-10 minutes of a round — it is the most important time segment.
    If someone misses this 10 minutes — his chances for a good place are extremely low.

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

      I won round #100 spending first 15 or so minutes in taxi (through I was able to read statements)

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

      Believe me or not, but in round 122 I was late for about an hour and the only solution for problem C at 1:59:08 was enough to get 80th place.

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

Aren't codeforces' contests (and similar) just about training? Nobody's getting money for a high rating, right? I was actually wondering for a long time, why many active forum participants do not compete that often.

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

Really nice observation. Probably the authority don't have a lot of things to do to solve the problem cause here the question is about the ethics of the participants!! But one things i can say that cheating can never give you the real taste, real excitement and real satisfaction of watching the word Accepted in green...

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

if it's not too much to ask, can u share some more info with us?

  • how did u acquire statistics like this (that too, grouped by color of rating!)? more precisely, how did u realize that a participant is neverVisited or silentlyVisited?
  • do Div-2 contests also follow similar pattern? if so, will a similar solution — making problem A very easy (like it's not easy enough :D) — work here also?
  • »
    »
    11 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    I'm guessing over here, but I believe it can easily be done, by periodically crawling and parsing some pages like a person's profile, you can get one's ranking (a simple map function, can pick the color), and whether he/she's online or not.

    And eventually, have a copy of registrants list, can find the first column. :D

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

    I've analyzed the following information:
    — round registrants list
    — last visit time of each round registrant during round (polling interval was 5 minutes)
    — official participants list

    Round registrants : codeforces.ru/contestRegistrants/<contestId> (after reg is closed)
    This page gives info about colors just before contest

    Last visit time of user: codeforces.ru/profile/<userName> page, Last visit: block, there is a hint with exact time of visit in one of <span> (during contest, each 5 min, for each registrant)
    So, if the user's last visit time is between current and previous request time, he is considered to be "spotted" inside this time segment :)
    Round participants: codeforces.ru/contest/<contestId>/standings page.

    Final data is sorted using tricky predicate (isParticipant -> wasVisited -> color -> totalVisitTime).

    It's difficult for me to comment your question about DIV-2, because I didn't analyse this data :)

»
11 years ago, # |
  Vote: I like it +24 Vote: I do not like it

I sometimes fall into your silentlyVisited users because I merely want to watch the contest, see how my friends are doing when I am unable to participate (forget to register or be late by more than 30 minutes).

Every system has its loophole. If the damage caused is not significant, fixing it shouldn't be recommended as more critical problems may always occur consequently. In this case, I think those people you are referring to are just minority of a big community thus we can simply ignore their behaviors rather than make the contest registration more troublesome for all other contestants.

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

When I register for a round, I usually compete. However, it's not a good idea when I know that I have to go somewhere after half an hour... or arrive late and there's no point in trying to solve the problems when many points have been lost. Of course, that's not a reason not to read the statements and watch the standings (unless I want to do virtual participation).

I don't unregister because there's still a chance that something went wrong (or right, however you view it) and the overlapping event was cancelled. Or I decide not to go.

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

After reading all the comments I thought of a possible solution that might solve most of the concerns. (and maybe create some others which I'm not aware of, I'm open to suggestions :) )

Someone proposed clicking a button to read the statements. Some others complained it didn't allow reading for fun, without competing.

Possible solution: just put two buttons that you can click after contest starts even if you arrive late: 1.Read but not compete 2.Compete.

Some others complained it would still be both possible and easy to do it. However, in this way this strategy would become illegal and I feel that most of this 25% silentcompetitors wouldn't do it if it was considered cheating, or they could be baned for doing so.