ha1vanka's blog

By ha1vanka, 10 years ago, In English

Hello everyone!

I have noticed some strange rating changes (at least strange for me) in the recent Codeforces Round 261 (Div. 2).

These are the top 5 (Div 2) users + their old and new rating:

  1. vanhanh.pham — 1396 — 1761
  2. ElemeNtLz — 1556 — 1772
  3. MLboy — 1500 (unrated) — 1805
  4. mssjtxwd — 1686 — 1795
  5. yyfkiller3 — 1500 (unrated) — 1805

ElemeNtLz had better old rating than yyfkiller3 — 1556 > 1500 (unrated)

ElemeNtLz placed better than yyfkiller3 — 2nd is better than 5th

But yyfkiller3 ended up with higher rating than ElemeNtLz. I think that is strange because ElemeNtLz did better overall and had higher rating, but ended up with less than yyfkiller3. — 1772 < 1805

Same goes for these pairs (and probably more):

ElemeNtLzMLboy

mssjtxwdyyfkiller3

But this is just my opinion and if you have your own (that differs mine), please share it.

PS I do not know these users and I am not trying to defend or offend them.

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

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

I think this is due to the way rating is calculated. It's an ELO-like system, so for every user something like his expected place is calculated and then if he does better than expected, his rating increases. Now ElemeNtLz has higher rating, so his expected place is higher, so when he gets second place he does better than the expected place but not MUCH better. While as far as I remember, when a user is competing for a first time his expected place is the participants/2-th place, so yyfkiller3 did MUCH better than his expected place. Therefore according to the ELO-like system he has much higher improvement.

I'm not saying it's fair though, that's a matter of opinion. I remember sometime ago an unrated guy participated in memsql cup round 2 as his first round and he got a little bit behind the half, and got his rating decreased. While blue competitors in the lower half got rating increase, simply because in the competition there were a lot of red/orange coders so saying an unrated guy is expected to be placed at position participants/2 turned out to be unfair, but that's how the system works.

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

    That's a somewhat complicated way to say "it works differently for people who are unrated".

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

This is a top secret code that codeforces uses to calculate the rating.

class RatingCalculator {
	Random random;
	int numberOfParticipants;
	public RatingCalculator(int n) {
		random = new Random();
		Thread.sleep(random.nextInt(22831337));
		numberOfParticipants = n;
	}
	
	public int calculateNewRating(int oldRating, int place) {
		double p = 0.5 - (place - 0.5) / numberOfParticipants;
		return oldRating + (int) (322 * (0.7 * p + 0.3 * random.nextGaussian()));
	}
}
»
10 years ago, # |
  Vote: I like it +10 Vote: I do not like it

I had this same issue with codeforces round #FF. I placed 120th officially and my rating change was 1522 -> 1689. A couple of other people who placed below me had either higher or lower ratings and they still became candidate master (rating >= 1700). Just my opinion that this rating system is a little unfair to those with not too high and not too low ratings.

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

I think rating changes also depend on the number of participated contest (something similar to Hackerrank 's system).

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

    Don't think so. Only first contest is special:) From my experience, if I am ranked close to some other guy with almost same rating, then we will both get almost same rating change — and it does not matter, did he participated in 100 contests before or only in 10.

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

RATING it is.