如题,一起来讨论一下 LeetCode 的周赛评分算法的原理。
按照我的理解,大体上是按照下面的流程来计算某个参赛者 i 的竞赛积分的:
但是我有一些细节没理解:
某场竞赛中的实际名次,是怎么计算的?按照官方的说法:
力扣竞赛真的可谓分秒必争,您的竞赛目标是在最短的时间内解出这些题目,并且保证最少的出错率。因为,每次的错误提交都会伴随着一定的加时惩罚。
那么,某场比赛的名次取决于两个维度:答对的题目数和答题的耗时,这两个维度具体是怎么加权得到某一场的实际名次的?
计算期望名次的时候,下面这个公式为什么要加 1 ?
被魔改后的 ELO 算法,是否还保有原版的性质?比如:战胜水平远低于自己的对手,涨分很少;逆风翻盘战胜强劲对手,涨分较快;输给水平远低于自己的对手,掉分较大。
如果是,怎么证明这一点?
求期望名次和实际名次的几何平均数,原理是什么?这一步看起来很关键,但是百思不得其解。
求 值的时候,系数随着场次增多逐渐收敛。我的理解是,如果一个参赛者水平保持不变,那么越到后面,涨分越慢;即便在后期水平提高了,但是因为排名已经比较靠前,战胜的对手大多比较弱,涨分的幅度也会变慢。我的理解对吗?
不知道官方君@LeetCode在不在?可以科普一下这个算法背后的原理🤝。
也欢迎大家理性讨论。我确实是竞赛小白,目前只参加了两场,分数很低,我在社区也一直是认真提问和分享心得,如果打算嘲讽和喷我,还请口下留德。