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

Автор DmitriyH, 10 лет назад, По-английски

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

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

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

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

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

    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 ?

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

      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.

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

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

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

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

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

        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.

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

      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.

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

      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! :)

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

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

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

          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.

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

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

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

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

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

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

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

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

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

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

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

    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.

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

    Step1: logout your account

    Step2: read the problems

    Step3: decide whether you want to participate or not

    Step4: login again.

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

    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.

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

      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.

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

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.

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

У меня почему-то такое ощущение, что это не график, а кто-то в пейнте побаловался

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

    Обижаете :)
    Изначально, это была HTML-table c td height 2px.
    Строки исходных данных отсортированы предикатом (isParticipant -> wasVisited -> color -> totalVisitTime)

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

      Я же не сказал что оно так и есть, просто ощущение:)

      Просто графики которые ты делал раньше, для меня, были более понятны.

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

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.

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

    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.

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

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

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

      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.

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

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.

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

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

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

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?
  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    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

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

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

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

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.

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

Немного не в тему: как вообще работает Последнее посещение на CF? Кто-то может объяснить механизм? Во-первых, с какого момента там отсчитывается время? С начала сессии? Или от какого-то чекпоинта? Когда пользователь уходит в оффлайн, там может быть время вида "3 часа назад", хотя человек 10-15 минут назад написал какой-нибудь комментарий или сделал сабмит. Во-вторых, почему оно часто игнорирует короткие посещения? Пользователь, у которого последнее посещение несколько часов назад — заходит на короткое время, становится online, выходит — и у него опять старое время последнего посещения.

По теме — спасибо за интересную статистику.

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

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 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

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.