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

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

FAQ

What is this?

Have you ever wondered who is the best hacker on Codeforces? Here is simple solution, which would try to answer for your problem! I would like to introduce new system of grading hackers in rounds.

How does it work?

The whole rating system is based on Elo rating. The problem is how to measure user's performance in each round.

Yes, how?

The whole system is now in phase of testing, so some solutions may be changed (and probably will be changed :)). So let's consider some user during some round. Let's call him Bob.

I want to choose another name, may I?

No.

Ok.

So, let's say that Bob solved three problems: A, B and C (Bob is pretty sad), but also hacked one solution for B and had one unsuccessful hack attempt. Bob doesn't know that his solution for C won't pass system tests. How would we know if it was good or bad?

At first, we will look at all possibilities for hacks for Bob. We will count all hacks done by other users in his rooms for problems that Bob solved (by problems solved I mean problems that had pretests passed). So:

#hacks = #hacksforA + #hacksforB + #hacksforC

Now we will count unused hacks possibilities (solutions which passed the pretests, but at the end didn't pass all tests, so they could be hacked), again only for problems that Bob solved, so let's call it #possibilities and it is calculated as above.

Now we will do some magic, the possible score to achieve by Bob by hacking was:

100·(#hacks + #possibilities)

I thought that it's not pretty fair for hacks and possibilities to have equal weight, so I choose to numbers a and b (not completely random and right now a > b) and set maximum possible score by Bob to:

a·#hacks + b·#possibilities

Of course in possible score we don't count wrong Bob's solutions (he cannot hack himself) and hack made on him. So we won't count his wrong solutions for C.

Bob score is count as:

a·#Bobshacks

Then we'll rescale this score, when 0 will be one bound and 1000 — another. Let's say that 1000 is maximum possible score (described above). Right now 0 is average score made by all users in room (generally this mean that if you won't hack anything you can have negative or positive score depends on how good hackers were with you in room).

Now what about unsuccessful hack?

Unsuccessful hacks are count normally before scalling with another magic number c. But there is one problem: what if some other user (let's say Rob) had no hack possibilites, but made unsuccessful hack? I guaranteed that punishment for wrong hack won't be more than c' (another magical fixed value).

What's then?

We have now scores for every user taking part in contest. We'll clasify them as in normal contest and set new rating using system simillar like in Codeforces (including new users starting nearby 1500 rating, using probabilites with 400-algorithm and so on... boring stuff).

So, where are the results?

I looked over last 12 contests and I have some data. The first 100 can be found below, and the whole ranking here.

There could be (and probably there are) some mistakes with wrong calculations and so on, but as I said, everything is under tests, I just wanted to share it with you. Feel free to make suggestions :)

Notes

In general, this rating doesn't mean that more hacks = better rating, it all depends on how many hacks you could do. It also may be quite not-fair for people who are making too many unsuccessful hacks (I am looking at you worse), because it is not punishing such people enough, but I still hope that will encourage people to hack more.

If you are interested, you can look at my previous posts about hacking, they can be found under hackme tag. Thank you for all up-votes!

Ranking

place handle rating #contests
1 Antoniuk 2077 6
2 dnkaito 2073 8
3 space_man 2071 5
4 scfkcf 2070 7
5 dcms2 2069 5
6 xtu_free 2067 6
7 mbaros 2063 5
8 Alex1878 2060 5
9 loujunjie 2057 7
10 catfish 2055 6
11 ilidar 2054 7
12 cup_of_tea 2044 6
13 mhadih 2043 8
14 kraskevich 2040 6
15 korun 2039 7
16 DimonK 2038 5
16 Omelianenko 2038 5
16 nguyenchicuong 2038 6
19 mosiomohsen 2032 7
20 poma.prs 2031 7
21 swap 2027 5
22 Dwayne 2026 7
23 shym98 2025 7
24 vidyut_7 2021 8
24 nemzs 2021 5
26 .PEIN. 2020 6
27 ikbal 2019 6
27 vengarth 2019 5
29 zhabo 2018 7
29 squee_spoon 2018 5
31 flame-alchemist 2017 6
32 waleed 2014 5
33 nightfury1204 2013 7
34 p-n_nepexod 2011 6
35 ks864148379 2008 7
36 zjbztianya 2006 5
37 hamedArafa 2005 6
38 HASP 2001 6
39 dnvtmf 1999 8
40 OmarEltobgy 1998 5
41 knst 1995 5
41 pawky 1995 7
43 kuldeepfouzdar 1994 6
44 IMAN_GH 1991 6
44 chinesejiang 1991 7
46 shiva_r31 1986 6
47 kellymilla18 1985 7
48 AllCatsAreBeautiful 1983 5
49 Elk-Cloner 1981 7
50 isurugieri 1979 5
51 arilato 1976 8
52 deMatos 1973 6
53 Kuroba 1971 6
53 dakeshi 1971 5
55 BigWhiteRabbit 1968 6
56 MRoy 1961 6
57 sorbhs 1959 6
58 BaHiE 1955 4
58 Fritz 1955 5
58 manatee 1955 5
61 suliang 1954 6
62 NominaTed 1950 5
63 Spark001 1945 4
64 sashkevichi 1942 5
65 ashish08 1940 5
65 olive 1940 4
67 venomous 1935 7
68 cccrown 1933 4
69 xennygrimmato 1931 6
70 add1ctus 1927 4
71 harshil 1921 5
71 lanjiongjiang 1921 5
73 MakArt 1916 4
74 VietaFan 1914 7
75 htrinh 1912 5
76 JJ921010 1911 5
77 nikcode 1908 6
78 Kshatiaya 1906 5
78 Slyusar 1906 4
80 warlock 1904 4
81 Aker 1902 6
82 loby 1901 4
83 Chinawyh 1900 5
83 shaonianguai 1900 5
85 mathhislife 1896 5
86 radhey_maa 1895 4
87 deathsurgeon 1894 4
87 prerakd 1894 6
89 DrPaulVazo 1891 5
89 youngkl 1891 5
91 martinradev 1888 6
91 selfcompiler 1888 6
93 ricowind 1887 4
93 Rostislav_the_great 1887 4
93 tapaswenipathak 1887 5
96 songxiaolong 1886 5
97 hcv 1884 4
97 scau201330340113 1884 4
99 ohweonfire 1883 6
100 123ghusa 1881 5
100 17JambaJuiceKallalk 1881 4
100 ngfam_kongu 1881 4
  • Проголосовать: нравится
  • +82
  • Проголосовать: не нравится

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

standings without tourist on top o.O

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

Two suggests:

  1. Div.1 successful hacks should get more performance points(because really hard)

  2. Problems with higher difficulty should get some bonus for hackers(because even harder than above)

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

    You may be right. I will look at it.

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

      I don't know if "1." is really a good idea. Yes I'm agree that there are lot less sucessful hacks on div1, but the hacks aren't necesarily harder, the mistakes can be the same, but just less numerous. Even if a compensation should exist, that would be illogical to proceed like this.
      For "2.", yes, that should be like this, maybe by following principle of "dynamic scoring".
      To avoid the matter that there are less coders making mistakes on div1, maybe we should just split the hacks realised on div 1 and on div 2 and make two standings, but chameleons coders oscillating between purple and blue will have no chance to reach any top, even if hacks are of great quality.

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

        I came up with "1." by the following reason: Almost everyone in div.1 knows how to avoid simple mistakes e.g. integer overflow. In fact if you want to hack a div.1 solution, you need fully understand what defender trys to do, rather than find a improper int in a code.

        BTW, (#successful hacks + #FST) / (#accepted) will be a good choice for dynamic scoring (except problems D and E because probably only one or two submissions will be made in a room)

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

I think, hacking code of a low rated coder is not same as hacking code of a high rated coder... Hacking code of high rated coders should give more points...
If we see in rating system of different game(like football, cricket...etc), the ratings tend to converge on a team's true strength relative to its competitors... For hacking, mistakes of high rated coders are very tricky(in general)... just shared my thought... :)

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

How could it be, that account, who have never hacked is at the hacking ranking? and how can it be in top-100 of hackers (57. sorbh) ? Serious problems with ranking formulae...

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

    Yeah, the problem may be when an user would solve only problems where he cannot hack anything. In such case his maximum score would be 0 and his score will be 0. I will change it asap.

    That's why I sad it's really beta version :)

    Thanks for pointing this out!