可不可以在Online Judge(在線評測系統)中加入類似OSU!的PP方案的Rank計算方案?

如題,在各大OJ網站中計算排名的方法大多是通過提交數、通過數或通過率來判斷的。當然也有比較玄學的類似洛谷的名字顏色方案。那麼可不可能採用一種類似osu!音樂遊戲的PP數計算方案來計算排名,完成一道簡單題目和完成一道難題的獲得數不相同,這樣AC較多難題的,但是總量跟不上的dalao們排名自然靠前,而孜孜不倦刷題的名次也不算靠後。並且由於不需公開,實現上我覺得也不是什麼難題。請問各位dalao們的意見?


如@Comzyh所說,我們當時做了一個基於Elo的系統。將題目和用戶放到同一個體系下評價,這樣根據用戶對一個題目嘗試的結果,來改變題目和用戶的rating。

基本邏輯就是一個rating為a的用戶做一個rating為b的題,我們可以根據a和b算出一個AC的期望。然後根據這個期望和實際的做題結果得到新的題目和用戶的rating。

計算的順序是根據實際的提交順序來的,這樣可以合理的表現用戶水平的變化。但這裡有個問題,在這樣的計算過程之中,不同用戶看得到同一道題的rating不一樣。所以我們的解決方案時,在第一輪計算之中得到的題目的rating在第二輪不再改變。

為了保證一定程度的正確性,我們當時驗證了一些不同層次有代表性的選手的rating結果,來說明這個rating在一定層次上有參考價值。對題目同理。

最後的結果當時看起來還行。過了幾年了,細節有些不太記得了。手機打字,很隨意。有點跑題,不好意思。僅作參考


可以,我們曾經設計過使用elo演算法自動計算問題的難度的方案。(elo 演算法是現在幾乎所有遊戲天梯系統的基礎。)

大致思路就是把人和題當成同類,人做對了題就算人贏了,反之亦然,人和題都會在天梯上有一個排名和一個rating.

這個系統是 @楊政 實現的,我沒參與,可能說的不準確。


謝邀。

個人感覺這樣想有一定的道理,複雜一些的排名計算方式肯定是比單一的統計題目通過數科學的。如果按照osu!的PP數來計算rank,大概就類似於洛谷的題目難度標籤再加上不會掉等級的名字顏色。那麼我們是不是可以設想一下,在此基礎上再加上其他的一些衡量參數呢?

舉個栗子。一個類似於洛谷的Online Judge包含了如下的幾方面可以考慮的東西:題目通過數量,已通過題目的難度,所提交程序相對於對應題目的空間使用和時間使用,題解的質量。

至於通過題目的數量,這個沒的說,硬指標。可以弱化它所佔的比重,但是絕對不可能不考慮。題目的通過數量可以反映出一個選手的勤奮程度。

題目難度也是硬指標,能做出難題的選手,水平一般不會低於做不出來的選手。考慮題目難度對rank的影響對於那些交題數量少但題目難度大的dalao們有好處。不過dalao似乎交的題並不會少,所謂量變引起質變。

再者就是所提交程序相對於對應題目的空間使用和時間使用。這個好像也沒什麼好說的。同樣的一道題目,使用的空間少時間少可以間接反映出一個選手的技巧高低。不過有個問題,OI中有個說法叫「空間換時間」,那具體怎麼平衡空間使用和時間使用在rank中所佔的比重就得斟酌一下了。

最後還有一點就是題解的質量。對於很難的題目而言,通過的人數不多,也許有一個題解就非常好了,這時候再討論題解質量高低就沒有意義了。拋開這種情況,對於簡單或中檔題來說,題解數量比較多的話,是不是可以通過給題解來排一下名來加權計算入rank中?如果一個選手把一道題目的題解寫的很詳細,細節之類的都考慮的很全面,那麼他對於這道題目一定有很好的理解,對於我這種水平低一些的選手來說也是一大福利,可以通過這種優秀的題解來提升自己的水平。或者,大家的思路都集中於一種演算法時,如果有人用其他的做法A掉了該題,這種題解也是可以同樣看作優秀的。題解的排序方式可以參考知乎上答案的排序方式,採用所謂「二項分布樣本的威爾遜置信區間下界」這種計算方式。

如上幾項合理加權後就是我所能想到的較為合理的rank計算方式。但是話又講回來,交題的目的並不是為了自己的rank排的更靠前啊。如果單純為了獲得一個靠前的rank來盲目交題,只去做有利於自己rank上升的題目(比如說難度較大的題目),盲目照搬題解,基礎並沒有打牢,這並不是一個好的事情。所以說,計算rank還是當成個娛樂活動吧。別太在乎了。


題主好歹把你說的那啥 PP 啥的介紹一下啊,真懶的話給個鏈接也行啊。

雖然我也是 osu! 玩家但我好像真的不知道這個東西?


本身這個系統實現難度不大,但關鍵問題是你的難度如何鑒別。出題人設定的難度很可能不具有參考性。用戶水平參差不齊,所以用戶評定也很有問題。所以如何設定這個所謂的難度,


為什麼你做個題都要看排名 不是提升自己的事情嗎 自己有收穫就好 何必這麼重視這個呢


我記得vijos好像就是這樣的吧


也就是說 題目也要加入難度評測 並且用戶本身也要做出低rank做高難度題目之類的判定?#滑稽

【那要不要題目也要 Grave Pending Ranked Loved 之類的?#陰險


我推薦51nod


你看著曲奇hdhr fdfd自己連ht都pass不了

你看著tourist做了道題,自己想ac直接copy code...

所以感覺pp系統放在oj很困難,主要是因為刷pp和AC的機制不同。題主提到無需公開...論壇一交流什麼的都是可以無腦AC的,這樣很難讓大家信服...但是刷pp這種東西,就算別人告訴你這邊大跳比較難,你自己打100次也不一定fc得了一次..


瀉藥

個人感覺是不可行的。

首先,OSU和OI性質不同,OSU是通過類似肌肉記憶的反覆練習來使某一首歌達到高的pp,屬於個人屬性。這種東西不存在別人告訴你如何如何操作然後你就可以提高你的準確度/獲得更高的pp之類的。

而OI更多是考察的思維,我想諸位的碼力對付OI的題都是綽綽有餘的,但是面對題目來說就是不知道要怎麼去寫。這個可能是智商/腦洞的差異?但是如果某位大佬跟你說了一下思路,即使只是提示一兩個名詞,你也有可能會立馬想到正解。


我們不妨設想一下,如果這個世界上沒有題解這種東西的存在,所有人做題都是靠自己想出來的。那麼如果加入pp作為rank的關鍵字的話是有參考性的。

但是這種情況並不現實,因為好的題解可以讓你了解別人的思路,對OI水平提升比較大。


我感覺其實Codeforces那樣的ACM賽制就有點類似於題主所說的pp計算吧?一場兩個小時的cf中有五道題,由易到難分數上升,多次提交分數會減(類似於準確度?)。最後按分數排本場rank,按rank計算rating。


推薦閱讀:

有沒有什麼支持matlab的oj?
能否實現爬蟲爬取OJ代碼?

TAG:OnlineJudge | NOI | NOIP | osu! | 信息學競賽 |