TopCoder SRMでのスコア計算

TopCoderでのスコア計算式

TopCoder SRMでは、問題を開いてから提出までにどのくらい時間がかかったでスコアが決まります。時間がかかるほど獲得するスコアが低くなる。その具体的な計算式がヘルプに載っています
MPを問題の最大ポイント、TTをCoding Phase全体の時間、PTを提出までにかかった時間として、スコアは

score=MP*(0.3+\frac{0.7*TT^2}{10*PT^2+TT^2})

で表されます。

グラフにした

ですが、式だけではピンとこないのでグラフを書いてみました。TT=75分としています。

時間が半分過ぎたところでスコアも半分になります。250点問題以外の場合は、y軸のスケールに適当な倍率をかけて換算してください。
ここに貼ってみて思ったけど、y軸のラベルに書いてる文言がグラフとしてはなんか変だな…。まあいいや作り直すのめんどい。

最低点の謎

上記の式で PT = TT として時間すべてを使ったときのスコアを出すと、MP*4/11 になるはずです。250点問題なら90.9pt。しかし、実際のSRMの記録を見ると、250点問題での最低点の人が獲得したスコアは75ptになっています。どういうことか。
おそらくですが、再提出による減点があってこうなっているのでしょう。一度提出した問題を再提出するたびに、その問題の最高点の10%がペナルティとして引かれるとヘルプに書いてあります
それで、最高点の30%のところまでがペナルティの限度になっているのではないでしょうか。ただ、これについてのヘルプでの記載は見つけられませんでした。