最近公司举办了仿 ACM-ICPC 赛制的年度程序大赛,4小时内做4题(可能和 leetcode 周赛是相同赛制,未来得及考证)。 最终排名第7,没有得奖。发现我对“罚时”的理解一直不太准确,这里简单记录下新的理解。
旧的理解:
- 先按做出题目的数量排名:做出题目数量越多,排名越靠前
- 如果数量相同,则按照做出题目的总时间排名
- 如果某题是一次性通过,则耗时为比赛开始到通过的时间;(或者是上一题通过 到 这次通过 的时间间隔?)
- 如果某题是错了n次后才通过,则增加 n*20 分钟
- 如果某题提交错误 n 次,但是始终没能通过,则没有罚时
其中 n*20
没有争议,是实打实的计入耗时中的;没有提交通过时,不计入罚时,这也好理解。 说说上面错误理解的地方:
- 正确提交消耗的时间,也叫做”罚时”。也就是说,对于某一题,即使没有错误的提交、只有一次正确的提交,那么它也产生“罚时”。
- 假设两只team最终做出的题目数量相同,并且都没有“错误的尝试”,那么并不一定是最后提交通过的那个队伍,排名靠后。
为了说明第二点,举一个例子: A和B两个队伍都是做出3道题,并且每道题都是一次性通过。每道题的提交通过时间如下:
队伍 | 第1题 | 第2题 | 第三题 |
---|---|---|---|
A | 第10分钟 | 第30分钟 | 第60分钟 |
B | 第5分钟 | 第10分钟 | 第80分钟 |
从最后一题(第三题)的提交时间来看,A队伍更早提交;按我之前的理解,A队伍更优秀,耗时更少,排名更靠前。
但实际上B队伍的排名要比A队伍靠前:
- A队伍耗时结果为: 10 + (10+30) + (10+30+60) = 10+40+100=150 (分钟)
- B队伍耗时结果为: 5 + (5+10) + (5+10+80) = 5+15+95 = 115 (分钟)
啥意思呢?隐藏的罚时规则::
- 假设大家都是先提交简单题,再提交难题
- 简单题花费的时间太多的话,即使难题比别人做的快,简单题的“慢”仍然带来惩罚
如果形式化表达下,可能更清晰:
- A队伍: 做出题目的时间点分别为 t1+a, t2+a, t3+a
- B队伍: 做出题目的时间点分别为 t1, t2, t3
也就是:A队伍在做题目1时比B队伍多花费a分钟,A队伍在题目2和题目3的耗时和B队伍是完全相同。那么A队伍的总耗时是 t1+a + t2+a + t3+a = t1+t2+t3 + 3*a. 而B队伍的总耗时为 t1+t2+t3。
很明显,题目1上浪费的a分钟,虽然在物理时间维度上是a分钟,但是在ACM题目的规则下,逻辑时间是 a*m
, 其中 m 是总共做出的题目数量。
而如果一个人脑回路发烧,先做难题再做简单题,会怎样呢?
假设三道题的耗时分别为 c1, c2, c3 分钟:
- 先易后难:做出题目的时间点为 c1, c1+c2, c1+c2+c3。 总耗时为
c1*3+c2*2+c3
=c1+c2+c3+(2*c1 + c2)
- 先难后易:做出题目的时间点为 c3, c3+c2, c3+c2+c1。 总耗时为
c3*3 + c2*2 + c1
=c1+c2+c3+(2*c3+c2)
显然,难题往往比简单题耗时更多,也就是 c1 < c2 < c3 总是成立的。那么先易后难的方式下,2*c1
显然小于 2*c3
, 耗时更少。
一个字:坑。
一句话:既要又要。
两句话:
- 难题,通过的数量越多越好(废话)
- 简单题,越快搞定越好;搞得越慢,后续每道通过的题上都产生额外惩罚
这个规则真的好吗? 真的健康吗? 我们把这个规则投射到实际生活中来:题目1->小学, 题目2->中学,题目3->大学。 我们假设小学最简单,中学中等难度,大学最难。 那么:
- A君:小学读了7年,中学读了6年,大学读了3年;7+(7+6)+(7+6+3)=7+13+16=36
- B君:小学读了5年,中学读了6年,大学读了5年; 5+(5+6)+(5+6+5)=5+11+16=32
- C君: 小学6年,中学6年,大学4年:6+(6+6)+(6+6+4)=6+12+16=30
嗯,很奇怪的结果出现了:
- 从发展轨迹看,A君天资愚钝,但是后天持续努力,大学提前修完学分,让人感受到“加速”和“精进”,从完成学业的时间点来看,毕业时间持平了同龄人C;B君天资聪慧,但是大学沉迷游戏导致留级一年,最终也和同龄人C一起毕业。
- 总大学阶段的状况看,A优秀,C普通,B较差
- 但是总分上,C最好,B稍次,A则相差很远
这导致即使A君目前虽然水平远超B君和C君,仍然被判定低分。
这真的公平吗?假设A并不是天资愚钝,而是处于农村家庭和大山里,没有良好的教学条件,小学也并非花了7年而是“晚一年上学”; B则是家庭条件良好 + 父母运作提前1年上学;C则是普通家庭,按法律规定时间上学。显然 A 更优秀。
结论:个人认为现行的 ACM-ICPC 方式的罚时规则存在歧视,对简单题目的耗时惩罚不合理,应当随着提交通过的题目数量增多而惩罚程度衰减,而不是保持相同程度的惩罚。